From mahesh143an@gmail.com Wed Jan 12 06:38:01 2011 From: mahesh gajabar To: development@drupal.org Subject: [development] creating pop-up window for delete and edit actions in table in module file Date: Wed, 12 Jan 2011 12:07:59 +0530 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0315605588303251093==" --===============0315605588303251093== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi, I have written a custome module table for showing some information which is fetched from database and every row is having edit and delete actions. Both are working fine. But whenever I click on on edit or delete action action it opens in other window leaving current page. I want these actions to be taken place in pop-up window. My table on drupal screen is as follows *SlNo* *Doctor Name* *Gender* *Status* *Action* 2 Jayaram Srinivasan male inactive Edit | Delete 3 Pavithra M female active Edit | Delete 4 Ravi Mandayam male active Edit | Delete when i click delete button i should get pop-up window with the dialogue like this; Are You Sure You Want To Delete This Doctor? This action cannot be undone. Cancel When I click edit button I should get my edit form, First Name: Last Name: Gender: male female Status: active inactive Cancel complete code of my module file is as follows: * t('Doctors'), 'page callback' =>'doctors_list', 'access arguments' => array('access doctor'), 'type' => MENU_NORMAL_ITEM, ); $items['doctor/delete/%doctor_user'] = array( 'title' => t('Delete doctor'), 'page callback' => 'drupal_get_form', 'page arguments' => array('doctor_delete_confirm', 2), 'access arguments' => array('access doctor'), 'type' => MENU_CALLBACK, ); $items['doctor/edit/%doctor_user'] = array( 'title' => t('Edit Form'), 'page callback' => 'drupal_get_form', 'page arguments' => array('doctor_edit_confirm', 2), 'access arguments' => array('access doctor'), 'type' => MENU_NORMAL_ITEM, ); return $items; } function doctors_list() { $header = array(t(Sl.No),t('Doctor Name'), t('Gender'), t('Status'), t('Action')); $query = "SELECT * FROM {doctor}"; $rs = db_query($query); $row = array(); if ($rs) { while ($data = db_fetch_object($rs)) { $doctorid = $data->doctorid; $gender = $data->gender; $status = $data->status ; $row[] = array($doctorid,stripslashes(ucwords($data->firstname)) . ' ' . stripslashes(ucwords($data->lastname)), $gender, $status, "" . t('Edit') . " | ". t('Delete')."" ); } } $str .= theme_table($header, $row); return $str; } function doctor_user_load($doctorid) { $query = "SELECT * FROM {doctor} WHERE doctorid = %d"; $rs = db_query($query, $doctorid); if ($rs) { while ($data = db_fetch_object($rs)) { return $data; } } return FALSE; } function popup() { window.confirm(); return false; } function doctor_delete_confirm(&$form_state, $doctor) { $form['_doctor'] = array( '#type' => 'value', '#value' => $doctor, ); return confirm_form($form, t('Are you sure you want to delete this doctor?'), isset($_GET['destination']) ? $_GET['destination'] : "doctor", t('This action cannot be undone.'), t('Delete'), t('Cancel')); } function doctor_delete_confirm_submit($form, &$form_state) { $form_values = $form_state['values']; if ($form_state['values']['confirm']) { $doctor = $form_state['values']['_doctor']; $query = "DELETE FROM {doctor} where doctorid= $doctor->doctorid"; $rs = db_query($query); drupal_set_message(t('Doctor has been deleted successfully.')); } drupal_goto("doctor"); } function doctor_edit_confirm(&$form_state,$doctor){ $form = array(); $form['_doctors'] = array( '#type' => 'value', '#value' => $doctor, ); $query = "SELECT * FROM {doctor} where doctorid=%d"; $rs = db_query($query,$doctor->doctorid); $data=db_fetch_object($rs); $firstname=$data->firstname; $lastname=$data->lastname; $gender1 = $data->gender; $gender = $gender1 ? 0: 1; $status1 = $data->status ; $status = $status1 ? 1: 0; $form['firstname']=array( '#title'=>t('First Name'), '#type'=>'textfield', '#default_value'=>$data->firstname, ); $form['lastname']=array( '#title'=>t('Last Name'), '#type'=>'textfield', '#default_value' => $lastname, ); $form['gender']=array( '#title'=>t('Gender'), '#type'=>'radios', '#options' => array(t('male'), t('female')), '#default_value' => variable_get('gender',$gender), ); $form['status']=array( '#title'=>t('Status'), '#type'=>'radios', '#options' => array(t('active'), t('inactive')), '#default_value' => variable_get('status',$status), ); return confirm_form($form,t(''), isset($_GET['destination']) ? $_GET['destination'] : "doctor", t(''), t('Save'), t('Cancel')); } function doctor_edit_confirm_submit($form, &$form_state) { if ($form_state['values']['confirm']) { $doctor = $form_state['values']['_doctors']; $form_state['values']['doctorid'] = $doctor->doctorid; $firstname = $form_state['values']['firstname']; $lastname = $form_state['values']['lastname']; $gender1= $form_state['values']['gender']; $gender = $gender1 ? t('female') : t('male'); $status1 = $form_state['values']['status']; $status = $status1 ? t('inactive') : t('active'); $query = "UPDATE {doctor} SET firstname = '$firstname', lastname= '$lastname', gender = '$gender', status = '$status' WHERE doctorid=%d"; $rs = db_query($query,$doctor->doctorid); } drupal_goto("doctor"); } *Any help appreciated.* * *Regards,* Mahesh Gajabar --===============0315605588303251093== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 SGksPGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5JIGhhdmUgd3JpdHRlbiBhIGN1c3RvbWUg bW9kdWxlIHRhYmxlIGZvciBzaG93aW5nIHNvbWUgaW5mb3JtYXRpb24gd2hpY2ggaXMgZmV0Y2hl ZCBmcm9tIGRhdGFiYXNlIGFuZCBldmVyeSByb3cgaXMgaGF2aW5nIGVkaXQgYW5kIGRlbGV0ZSBh Y3Rpb25zLiBCb3RoIGFyZSB3b3JraW5nIGZpbmUuIEJ1dCB3aGVuZXZlciBJIGNsaWNrIG9uIG9u IGVkaXQgb3IgZGVsZXRlIGFjdGlvbiBhY3Rpb24gaXQgb3BlbnMgaW4gb3RoZXIgd2luZG93IGxl YXZpbmcgY3VycmVudCBwYWdlLiBJIHdhbnQgdGhlc2UgYWN0aW9ucyB0byBiZSB0YWtlbiBwbGFj ZSBpbiBwb3AtdXAgd2luZG93LiA8YnI+Cgo8YnI+TXkgdGFibGUgb24gZHJ1cGFsIHNjcmVlbiBp cyBhcyBmb2xsb3dzPGJyPjxicj4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIj4K IDx0aGVhZD4KICA8dHI+CiAgIDx0ZCBzdHlsZT0icGFkZGluZzogMC43NXB0OyI+CiAgIDxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwLjAwMDFwdDsgdGV4dC1hbGln bjogY2VudGVyOyBsaW5lLWhlaWdodDogbm9ybWFsOyIgYWxpZ249ImNlbnRlciI+PGI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21h biZxdW90OywmcXVvdDtzZXJpZiZxdW90OzsiPlNsTm88L3NwYW4+PC9iPjwvcD4KCgogICA8L3Rk PgogICA8dGQgc3R5bGU9InBhZGRpbmc6IDAuNzVwdDsiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4wMDAxcHQ7IHRleHQtYWxpZ246IGNlbnRlcjsgbGlu ZS1oZWlnaHQ6IG5vcm1hbDsiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7 c2VyaWYmcXVvdDs7Ij5Eb2N0b3IKICAgTmFtZTwvc3Bhbj48L2I+PC9wPgogICA8L3RkPgogICA8 dGQgc3R5bGU9InBhZGRpbmc6IDAuNzVwdDsiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWJvdHRvbTogMC4wMDAxcHQ7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWln aHQ6IG5vcm1hbDsiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEy cHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYm cXVvdDs7Ij5HZW5kZXI8L3NwYW4+PC9iPjwvcD4KCgogICA8L3RkPgogICA8dGQgc3R5bGU9InBh ZGRpbmc6IDAuNzVwdDsiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJv dHRvbTogMC4wMDAxcHQ7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IG5vcm1hbDsi IGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFt aWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDs7Ij5TdGF0 dXM8L3NwYW4+PC9iPjwvcD4KCgogICA8L3RkPgogICA8dGQgc3R5bGU9InBhZGRpbmc6IDAuNzVw dDsiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4wMDAx cHQ7IHRleHQtYWxpZ246IGNlbnRlcjsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiIGFsaWduPSJjZW50 ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtU aW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDs7Ij5BY3Rpb248L3NwYW4+PC9i PjwvcD4KCgogICA8L3RkPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pjx0cj4KICA8dGQgc3R5 bGU9InBhZGRpbmc6IDAuNzVwdDsiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJn aW4tYm90dG9tOiAwLjAwMDFwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDss JnF1b3Q7c2VyaWYmcXVvdDs7Ij4yPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFk ZGluZzogMC43NXB0OyI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0 b206IDAuMDAwMXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtz ZXJpZiZxdW90OzsiPkpheWFyYW0gU3Jpbml2YXNhbjwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQg c3R5bGU9InBhZGRpbmc6IDAuNzVwdDsiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tYm90dG9tOiAwLjAwMDFwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVv dDssJnF1b3Q7c2VyaWYmcXVvdDs7Ij5tYWxlPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHls ZT0icGFkZGluZzogMC43NXB0OyI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1ib3R0b206IDAuMDAwMXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oywm cXVvdDtzZXJpZiZxdW90OzsiPmluYWN0aXZlPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHls ZT0icGFkZGluZzogMC43NXB0OyI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1ib3R0b206IDAuMDAwMXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oywm cXVvdDtzZXJpZiZxdW90OzsiPjxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yL2Vk aXQvMiIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPkVkaXQ8L3Nw YW4+PC9hPgogIHw8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9kZWxldGUvMiIg dGFyZ2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPgogIERlbGV0ZTwvc3Bh bj48L2E+PC9zcGFuPjwvcD4KICA8L3RkPgogPC90cj4KIDx0cj4KICA8dGQgc3R5bGU9InBhZGRp bmc6IDAuNzVwdDsiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9t OiAwLjAwMDFwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2Vy aWYmcXVvdDs7Ij4zPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzogMC43 NXB0OyI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuMDAw MXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsg Zm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90 OzsiPlBhdml0aHJhIE08L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOiAw Ljc1cHQ7Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4w MDAxcHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0 OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1 b3Q7OyI+ZmVtYWxlPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzogMC43 NXB0OyI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuMDAw MXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsg Zm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90 OzsiPmFjdGl2ZTwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBhZGRpbmc6IDAuNzVw dDsiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwLjAwMDFw dDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZv bnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDs7 Ij48YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9lZGl0LzMiIHRhcmdldD0iX2Js YW5rIj48c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5FZGl0PC9zcGFuPjwvYT4KICB8PGEgaHJl Zj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IvZGVsZXRlLzMiIHRhcmdldD0iX2JsYW5rIj48 c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4KICBEZWxldGU8L3NwYW4+PC9hPjwvc3Bhbj48L3A+ CiAgPC90ZD4KIDwvdHI+CiA8dHI+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwLjc1cHQ7Ij4KICA8 cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4wMDAxcHQ7IGxpbmUt aGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWls eTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7OyI+NDwvc3Bh bj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBhZGRpbmc6IDAuNzVwdDsiPgogIDxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwLjAwMDFwdDsgbGluZS1oZWlnaHQ6 IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVv dDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDs7Ij5SYXZpIE1hbmRheWFt PC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzogMC43NXB0OyI+CiAgPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuMDAwMXB0OyBsaW5lLWhl aWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6 ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OzsiPm1hbGU8L3Nw YW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwLjc1cHQ7Ij4KICA8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4wMDAxcHQ7IGxpbmUtaGVpZ2h0 OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1 b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7OyI+YWN0aXZlPC9zcGFu PjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzogMC43NXB0OyI+CiAgPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuMDAwMXB0OyBsaW5lLWhlaWdodDog bm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90 O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OzsiPjxhIGhyZWY9Imh0dHA6 Ly9sb2NhbGhvc3QvZnIvZG9jdG9yL2VkaXQvNCIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxl PSJjb2xvcjogYmx1ZTsiPkVkaXQ8L3NwYW4+PC9hPgogIHw8YSBocmVmPSJodHRwOi8vbG9jYWxo b3N0L2ZyL2RvY3Rvci9kZWxldGUvNCIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxlPSJjb2xv cjogYmx1ZTsiPgogIERlbGV0ZTwvc3Bhbj48L2E+PC9zcGFuPjwvcD4KICA8L3RkPgogPC90cj4K PC90Ym9keT48L3RhYmxlPgoKPGJyPndoZW4gaSBjbGljayBkZWxldGUgYnV0dG9uIGkgc2hvdWxk IGdldCBwb3AtdXAgd2luZG93IHdpdGggdGhlIGRpYWxvZ3VlIGxpa2UgdGhpczs8YnI+PGJyPjxo Mj5BcmUgWW91IFN1cmUgWW91IFdhbnQgVG8gRGVsZXRlIFRoaXMgRG9jdG9yPzwvaDI+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApUaGlzIGFjdGlvbiBjYW5ub3QgYmUg dW5kb25lLjxpbnB1dCBuYW1lPSJjb25maXJtIiB2YWx1ZT0iMSIgdHlwZT0iaGlkZGVuIj4KPGRp dj48aW5wdXQgbmFtZT0ib3AiIHZhbHVlPSJEZWxldGUiIHR5cGU9InN1Ym1pdCI+CjxhIGhyZWY9 Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yIiB0YXJnZXQ9Il9ibGFuayI+Q2FuY2VsPC9hPjxi cj48YnI+V2hlbiBJIGNsaWNrIGVkaXQgYnV0dG9uIEkgc2hvdWxkIGdldCBteSBlZGl0IGZvcm0s PGJyPjxzcGFuPjxkaXY+PC9kaXY+PC9zcGFuPgkJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAo8ZGl2PgogPGxhYmVsPkZpcnN0IE5hbWU6IDwvbGFiZWw+CiA8aW5wdXQg bWF4bGVuZ3RoPSIxMjgiIG5hbWU9ImZpcnN0bmFtZSIgc2l6ZT0iNjAiIHZhbHVlPSJqYXlhcmFt IiB0eXBlPSJ0ZXh0Ij4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+TGFzdCBOYW1lOiA8L2xhYmVsPgog PGlucHV0IG1heGxlbmd0aD0iMTI4IiBuYW1lPSJsYXN0bmFtZSIgc2l6ZT0iNjAiIHZhbHVlPSJz cmluaXZhc2FuIiB0eXBlPSJ0ZXh0Ij4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+R2VuZGVyOiA8L2xh YmVsPgogPGRpdj48ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJnZW5kZXIiIHZhbHVlPSIwIiBj aGVja2VkIHR5cGU9InJhZGlvIj4gbWFsZTwvbGFiZWw+CjwvZGl2Pgo8ZGl2PgogPGxhYmVsPjxp bnB1dCBuYW1lPSJnZW5kZXIiIHZhbHVlPSIxIiB0eXBlPSJyYWRpbyI+IGZlbWFsZTwvbGFiZWw+ CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+U3RhdHVzOiA8L2xhYmVsPgogPGRp dj48ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJzdGF0dXMiIHZhbHVlPSIwIiB0eXBlPSJyYWRp byI+IGFjdGl2ZTwvbGFiZWw+CjwvZGl2Pgo8ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJzdGF0 dXMiIHZhbHVlPSIxIiBjaGVja2VkIHR5cGU9InJhZGlvIj4gaW5hY3RpdmU8L2xhYmVsPgo8L2Rp dj4KPC9kaXY+CjwvZGl2Pgo8aW5wdXQgbmFtZT0iY29uZmlybSIgdmFsdWU9IjEiIHR5cGU9Imhp ZGRlbiI+CjxkaXY+PGlucHV0IG5hbWU9Im9wIiB2YWx1ZT0iU2F2ZSIgdHlwZT0ic3VibWl0Ij4K PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IiIHRhcmdldD0iX2JsYW5rIj5DYW5j ZWw8L2E+PC9kaXY+oDxicj5jb21wbGV0ZSBjb2RlIG9mIG15IG1vZHVsZSBmaWxlIGlzIGFzIGZv bGxvd3M6PGJyPjxicj48aSBzdHlsZT0iZm9udC1mYW1pbHk6IHZlcmRhbmEsc2Fucy1zZXJpZjsi PjxiPiZsdDs/cGhwPGJyPjxicj5mdW5jdGlvbiBkb2N0b3JfbWVudSgpIHs8YnI+oCAkaXRlbXMg PSBhcnJheSgpOzxicj4KCqA8YnI+oCAkaXRlbXNbJiMzOTtkb2N0b3ImIzM5O10gPSBhcnJheSg8 YnI+oKCgICYjMzk7dGl0bGUmIzM5OyA9Jmd0OyB0KCYjMzk7RG9jdG9ycyYjMzk7KSw8YnI+oKCg ICYjMzk7cGFnZSBjYWxsYmFjayYjMzk7ID0mZ3Q7JiMzOTtkb2N0b3JzX2xpc3QmIzM5Oyw8YnI+ oKCgICYjMzk7YWNjZXNzIGFyZ3VtZW50cyYjMzk7ID0mZ3Q7IGFycmF5KCYjMzk7YWNjZXNzIGRv Y3RvciYjMzk7KSw8YnI+CgqgoKAgJiMzOTt0eXBlJiMzOTsgPSZndDsgTUVOVV9OT1JNQUxfSVRF TSw8YnI+oCApOzxicj6gPGJyPqAgJGl0ZW1zWyYjMzk7ZG9jdG9yL2RlbGV0ZS8lZG9jdG9yX3Vz ZXImIzM5O10gPSBhcnJheSg8YnI+oKCgICYjMzk7dGl0bGUmIzM5OyA9Jmd0OyB0KCYjMzk7RGVs ZXRlIGRvY3RvciYjMzk7KSw8YnI+oKCgICYjMzk7cGFnZSBjYWxsYmFjayYjMzk7ID0mZ3Q7ICYj Mzk7ZHJ1cGFsX2dldF9mb3JtJiMzOTssPGJyPgoKoKCgICYjMzk7cGFnZSBhcmd1bWVudHMmIzM5 OyA9Jmd0OyBhcnJheSgmIzM5O2RvY3Rvcl9kZWxldGVfY29uZmlybSYjMzk7LCAyKSw8YnI+oKCg ICYjMzk7YWNjZXNzIGFyZ3VtZW50cyYjMzk7ID0mZ3Q7IGFycmF5KCYjMzk7YWNjZXNzIGRvY3Rv ciYjMzk7KSw8YnI+oKCgICYjMzk7dHlwZSYjMzk7ID0mZ3Q7IE1FTlVfQ0FMTEJBQ0ssPGJyPqAg KTs8YnI+oCRpdGVtc1smIzM5O2RvY3Rvci9lZGl0LyVkb2N0b3JfdXNlciYjMzk7XSA9IGFycmF5 KDxicj4KCqCgoCAmIzM5O3RpdGxlJiMzOTsgPSZndDsgdCgmIzM5O0VkaXQgRm9ybSYjMzk7KSw8 YnI+oKCgICYjMzk7cGFnZSBjYWxsYmFjayYjMzk7ID0mZ3Q7ICYjMzk7ZHJ1cGFsX2dldF9mb3Jt JiMzOTssPGJyPiYjMzk7cGFnZSBhcmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2RvY3Rv cl9lZGl0X2NvbmZpcm0mIzM5OywgMiksPGJyPqCgICYjMzk7YWNjZXNzIGFyZ3VtZW50cyYjMzk7 ID0mZ3Q7IGFycmF5KCYjMzk7YWNjZXNzIGRvY3RvciYjMzk7KSw8YnI+CgqgoKAgJiMzOTt0eXBl JiMzOTsgPSZndDsgTUVOVV9OT1JNQUxfSVRFTSw8YnI+oCApOzxicj6gIHJldHVybiAkaXRlbXM7 PGJyPn08YnI+PGJyPmZ1bmN0aW9uIGRvY3RvcnNfbGlzdCgpIHs8YnI+oKCgICRoZWFkZXIgPSBh cnJheSh0KFNsLk5vKSx0KCYjMzk7RG9jdG9yIE5hbWUmIzM5OyksIHQoJiMzOTtHZW5kZXImIzM5 OyksoCB0KCYjMzk7U3RhdHVzJiMzOTspLCB0KCYjMzk7QWN0aW9uJiMzOTspKTs8YnI+CgqgPGJy PqCgoCAkcXVlcnkgPSAmcXVvdDtTRUxFQ1QgKiBGUk9NIHtkb2N0b3J9JnF1b3Q7Ozxicj6goKAg JHJzID0gZGJfcXVlcnkoJHF1ZXJ5KTs8YnI+oDxicj6goKAgJHJvdyA9IGFycmF5KCk7PGJyPqA8 YnI+oKCgIGlmICgkcnMpIHs8YnI+oKCgIKCgoCB3aGlsZSAoJGRhdGEgPSBkYl9mZXRjaF9vYmpl Y3QoJHJzKSkgezxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoCAkZG9jdG9yaWQgPSAkZGF0YS0mZ3Q7ZG9jdG9yaWQ7PGJyPgoKoKCgIKCgoCCg oKAgJGdlbmRlciA9ICRkYXRhLSZndDtnZW5kZXI7PGJyPqCgoCCgoKAgoKCgICRzdGF0dXMgPSAk ZGF0YS0mZ3Q7c3RhdHVzIDs8YnI+oKCgIKCgoCCgoKAgJHJvd1tdID0gYXJyYXkoJGRvY3Rvcmlk LHN0cmlwc2xhc2hlcyh1Y3dvcmRzKCRkYXRhLSZndDtmaXJzdG5hbWUpKSAuICYjMzk7ICYjMzk7 IC4gc3RyaXBzbGFzaGVzKHVjd29yZHMoJGRhdGEtJmd0O2xhc3RuYW1lKSksICRnZW5kZXIsICRz dGF0dXMsIDxicj4KCqCgoCCgoKAgoKCgICZxdW90OyZsdDthIGhyZWY9JiMzOTtkb2N0b3IvZWRp dC97JGRhdGEtJmd0O2RvY3RvcmlkfSYjMzk7Jmd0OyZxdW90OyAuIHQoJiMzOTtFZGl0JiMzOTsp IC6gICZxdW90OyZsdDsvYSZndDsgfCZsdDthIGhyZWY9JiMzOTtkb2N0b3IvZGVsZXRlL3skZGF0 YS0mZ3Q7ZG9jdG9yaWR9JiMzOTsmZ3Q7ICZxdW90Oy4gdCgmIzM5O0RlbGV0ZSYjMzk7KS4mcXVv dDsmbHQ7L2EmZ3Q7JnF1b3Q7ICk7PGJyPgoKoKCgIKCgoCB9PGJyPqCgoCB9PGJyPqA8YnI+oKCg ICRzdHIgLj0gdGhlbWVfdGFibGUoJGhlYWRlciwgJHJvdyk7PGJyPqA8YnI+oKCgIHJldHVybiAk c3RyOzxicj59PGJyPmZ1bmN0aW9uIGRvY3Rvcl91c2VyX2xvYWQoJGRvY3RvcmlkKSB7PGJyPqCg oCAkcXVlcnkgPSAmcXVvdDtTRUxFQ1QgKiBGUk9NIHtkb2N0b3J9IFdIRVJFIGRvY3RvcmlkID0g JWQmcXVvdDs7PGJyPqCgoCAkcnMgPSBkYl9xdWVyeSgkcXVlcnksICRkb2N0b3JpZCk7PGJyPgoK oDxicj6goKAgaWYgKCRycykgezxicj6goKAgoKCgIHdoaWxlICgkZGF0YSA9IGRiX2ZldGNoX29i amVjdCgkcnMpKSB7PGJyPqCgoCCgoKAgoKCgIHJldHVybiAkZGF0YTs8YnI+oKCgIKCgoCB9PGJy PqCgoCB9PGJyPqA8YnI+oKCgIHJldHVybiBGQUxTRTs8YnI+fTxicj48YnI+ZnVuY3Rpb24gcG9w dXAoKTxicj57PGJyPndpbmRvdy5jb25maXJtKCk7PGJyPnJldHVybiBmYWxzZTs8YnI+Cgp9PGJy Pjxicj5mdW5jdGlvbiBkb2N0b3JfZGVsZXRlX2NvbmZpcm0oJmFtcDskZm9ybV9zdGF0ZSwgJGRv Y3Rvcikgezxicj6goKAgJGZvcm1bJiMzOTtfZG9jdG9yJiMzOTtdID0gYXJyYXkoPGJyPqCgoCCg oKAgJiMzOTsjdHlwZSYjMzk7ID0mZ3Q7ICYjMzk7dmFsdWUmIzM5Oyw8YnI+oKCgIKCgoCAmIzM5 OyN2YWx1ZSYjMzk7ID0mZ3Q7ICRkb2N0b3IsPGJyPqCgoCApOzxicj6gPGJyPgoKoKCgIHJldHVy biBjb25maXJtX2Zvcm0oJGZvcm0sPGJyPqCgoCCgoKAgdCgmIzM5O0FyZSB5b3Ugc3VyZSB5b3Ug d2FudCB0byBkZWxldGUgdGhpcyBkb2N0b3I/JiMzOTspLDxicj6goKAgoKCgIGlzc2V0KCRfR0VU WyYjMzk7ZGVzdGluYXRpb24mIzM5O10pID8gJF9HRVRbJiMzOTtkZXN0aW5hdGlvbiYjMzk7XSA6 ICZxdW90O2RvY3RvciZxdW90Oyw8YnI+oKCgIKCgoCB0KCYjMzk7VGhpcyBhY3Rpb24gY2Fubm90 IGJlIHVuZG9uZS4mIzM5OyksPGJyPgoKoKCgIKCgoCB0KCYjMzk7RGVsZXRlJiMzOTspLDxicj6g oKAgoKCgIHQoJiMzOTtDYW5jZWwmIzM5OykpOzxicj59PGJyPjxicj5mdW5jdGlvbiBkb2N0b3Jf ZGVsZXRlX2NvbmZpcm1fc3VibWl0KCRmb3JtLCAmYW1wOyRmb3JtX3N0YXRlKSB7PGJyPqCgoCAk Zm9ybV92YWx1ZXMgPSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XTs8YnI+oDxicj6goKAg aWYgKCRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYjMzk7Y29uZmlybSYjMzk7XSkgezxi cj4KCqCgoCCgoKAgJGRvY3RvciA9ICRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYjMzk7 X2RvY3RvciYjMzk7XTs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCA8 YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICRxdWVyeSA9ICZxdW90O0RF TEVURaAgRlJPTSB7ZG9jdG9yfSB3aGVyZSBkb2N0b3JpZD0gJGRvY3Rvci0mZ3Q7ZG9jdG9yaWQm cXVvdDs7PGJyPgoKoKCgIKCgoKCgoKCgoKCgoKCgoKCgoCAkcnMgPSBkYl9xdWVyeSgkcXVlcnkp Ozxicj5kcnVwYWxfc2V0X21lc3NhZ2UodCgmIzM5O0RvY3RvciBoYXMgYmVlbiBkZWxldGVkIHN1 Y2Nlc3NmdWxseS4mIzM5OykpOzxicj6gIKCgoCB9oCBkcnVwYWxfZ290bygmcXVvdDtkb2N0b3Im cXVvdDspOzxicj59PGJyPjxicj5mdW5jdGlvbiBkb2N0b3JfZWRpdF9jb25maXJtKCZhbXA7JGZv cm1fc3RhdGUsJGRvY3Rvcil7PGJyPgoKoCRmb3JtID0gYXJyYXkoKTs8YnI+JGZvcm1bJiMzOTtf ZG9jdG9ycyYjMzk7XSA9IGFycmF5KDxicj6goKAgoKCgICYjMzk7I3R5cGUmIzM5OyA9Jmd0OyAm IzM5O3ZhbHVlJiMzOTssPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAm IzM5OyN2YWx1ZSYjMzk7ID0mZ3Q7ICRkb2N0b3IsPGJyPqCgoCCgoKAgKTs8YnI+PGJyPiRxdWVy eSA9ICZxdW90O1NFTEVDVCAqIEZST00ge2RvY3Rvcn0gd2hlcmUgZG9jdG9yaWQ9JWQmcXVvdDs7 PGJyPgoKoKCgICRycyA9IGRiX3F1ZXJ5KCRxdWVyeSwkZG9jdG9yLSZndDtkb2N0b3JpZCk7PGJy PiRkYXRhPWRiX2ZldGNoX29iamVjdCgkcnMpOzxicj4kZmlyc3RuYW1lPSRkYXRhLSZndDtmaXJz dG5hbWU7PGJyPiRsYXN0bmFtZT0kZGF0YS0mZ3Q7bGFzdG5hbWU7PGJyPiRnZW5kZXIxID0gJGRh dGEtJmd0O2dlbmRlcjs8YnI+JGdlbmRlciA9ICRnZW5kZXIxID8gMDogMTs8YnI+JHN0YXR1czEg PSAkZGF0YS0mZ3Q7c3RhdHVzIDs8YnI+Cgokc3RhdHVzID0gJHN0YXR1czEgPyAxOiAwOzxicj4k Zm9ybVsmIzM5O2ZpcnN0bmFtZSYjMzk7XT1hcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0aXRsZSYj Mzk7PSZndDt0KCYjMzk7Rmlyc3QgTmFtZSYjMzk7KSw8YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMz OTs9Jmd0OyYjMzk7dGV4dGZpZWxkJiMzOTssPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgJiMzOTsjZGVmYXVsdF92YWx1ZSYjMzk7PSZndDskZGF0YS0mZ3Q7Zmlyc3RuYW1l LDxicj4KCqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIDxicj6gICk7PGJyPiRm b3JtWyYjMzk7bGFzdG5hbWUmIzM5O109YXJyYXkoPGJyPqCgoCCgoKAgJiMzOTsjdGl0bGUmIzM5 Oz0mZ3Q7dCgmIzM5O0xhc3QgTmFtZSYjMzk7KSw8YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMzOTs9 Jmd0OyYjMzk7dGV4dGZpZWxkJiMzOTssPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoCAmIzM5OyNkZWZhdWx0X3ZhbHVlJiMzOTsgPSZndDsgJGxhc3RuYW1lLDxicj4KCqCg oCApOzxicj4kZm9ybVsmIzM5O2dlbmRlciYjMzk7XT1hcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0 aXRsZSYjMzk7PSZndDt0KCYjMzk7R2VuZGVyJiMzOTspLDxicj6goKAgoKCgICYjMzk7I3R5cGUm IzM5Oz0mZ3Q7JiMzOTtyYWRpb3MmIzM5Oyw8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoCA8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAmIzM5OyNvcHRp b25zJiMzOTsgPSZndDsgYXJyYXkodCgmIzM5O21hbGUmIzM5OyksIHQoJiMzOTtmZW1hbGUmIzM5 OykpLDxicj4KCqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAmIzM5OyNkZWZh dWx0X3ZhbHVlJiMzOTsgPSZndDsgdmFyaWFibGVfZ2V0KCYjMzk7Z2VuZGVyJiMzOTssJGdlbmRl ciksPGJyPqCgoCApOzxicj4kZm9ybVsmIzM5O3N0YXR1cyYjMzk7XT1hcnJheSg8YnI+oKCgIKCg oCAmIzM5OyN0aXRsZSYjMzk7PSZndDt0KCYjMzk7U3RhdHVzJiMzOTspLDxicj6goKAgoKCgICYj Mzk7I3R5cGUmIzM5Oz0mZ3Q7JiMzOTtyYWRpb3MmIzM5Oyw8YnI+CgqgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgJiMzOTsjb3B0aW9ucyYjMzk7ID0mZ3Q7IGFycmF5KHQoJiMzOTthY3Rp dmUmIzM5OyksIHQoJiMzOTtpbmFjdGl2ZSYjMzk7KSksPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgJiMzOTsjZGVmYXVsdF92YWx1ZSYjMzk7ID0mZ3Q7IHZhcmlhYmxlX2dldCgm IzM5O3N0YXR1cyYjMzk7LCRzdGF0dXMpLDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgIDxicj4KCqCgoCApOzxicj6goKAgPGJyPnJldHVybiBjb25maXJtX2Zvcm0oJGZv cm0sdCgmIzM5OyYjMzk7KSw8YnI+oKCgIKCgoCBpc3NldCgkX0dFVFsmIzM5O2Rlc3RpbmF0aW9u JiMzOTtdKSA/ICRfR0VUWyYjMzk7ZGVzdGluYXRpb24mIzM5O10gOiAmcXVvdDtkb2N0b3ImcXVv dDssPGJyPqCgoCCgoKAgdCgmIzM5OyYjMzk7KSw8YnI+oKCgIKCgoCB0KCYjMzk7U2F2ZSYjMzk7 KSw8YnI+oKCgIKCgoCB0KCYjMzk7Q2FuY2VsJiMzOTspKTs8YnI+Cgp9PGJyPjxicj5mdW5jdGlv biBkb2N0b3JfZWRpdF9jb25maXJtX3N1Ym1pdCgkZm9ybSwgJmFtcDskZm9ybV9zdGF0ZSk8YnI+ ezxicj5pZiAoJGZvcm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5O11bJiMzOTtjb25maXJtJiMzOTtd KSB7PGJyPiRkb2N0b3IgPSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O19kb2N0 b3JzJiMzOTtdOzxicj4kZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O2RvY3Rvcmlk JiMzOTtdID0gJGRvY3Rvci0mZ3Q7ZG9jdG9yaWQ7PGJyPgoKoCRmaXJzdG5hbWUgPSAkZm9ybV9z dGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O2ZpcnN0bmFtZSYjMzk7XTs8YnI+oKCgICRsYXN0 bmFtZSA9ICRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYjMzk7bGFzdG5hbWUmIzM5O107 PGJyPqCgoCAkZ2VuZGVyMT0gJGZvcm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5O11bJiMzOTtnZW5k ZXImIzM5O107PGJyPiRnZW5kZXIgPaAgJGdlbmRlcjEgPyB0KCYjMzk7ZmVtYWxlJiMzOTspIDog dCgmIzM5O21hbGUmIzM5Oyk7PGJyPgoKoKCgICRzdGF0dXMxID0gJGZvcm1fc3RhdGVbJiMzOTt2 YWx1ZXMmIzM5O11bJiMzOTtzdGF0dXMmIzM5O107PGJyPiRzdGF0dXMgPSAkc3RhdHVzMSA/IHQo JiMzOTtpbmFjdGl2ZSYjMzk7KSA6IHQoJiMzOTthY3RpdmUmIzM5Oyk7PGJyPiRxdWVyeSA9ICZx dW90O1VQREFURaAge2RvY3Rvcn0gU0VUIGZpcnN0bmFtZSA9ICYjMzk7JGZpcnN0bmFtZSYjMzk7 LCBsYXN0bmFtZT0gJiMzOTskbGFzdG5hbWUmIzM5OyygIGdlbmRlciA9ICYjMzk7JGdlbmRlciYj Mzk7LCBzdGF0dXMgPSAmIzM5OyRzdGF0dXMmIzM5O6AgV0hFUkWgIGRvY3RvcmlkPSVkJnF1b3Q7 Ozxicj4KCqAkcnMgPSBkYl9xdWVyeSgkcXVlcnksJGRvY3Rvci0mZ3Q7ZG9jdG9yaWQpOyB9PGJy PmRydXBhbF9nb3RvKCZxdW90O2RvY3RvciZxdW90Oyk7PGJyPn08YnI+PGJyPjwvYj48L2k+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLHNhbnMtc2VyaWY7Ij5BbnkgaGVscCBhcHBy ZWNpYXRlZC48L3NwYW4+PGkgc3R5bGU9ImZvbnQtZmFtaWx5OiB2ZXJkYW5hLHNhbnMtc2VyaWY7 Ij48Yj48YnI+Cgo8YnI+PC9iPjwvaT48L2Rpdj48aSBzdHlsZT0iZm9udC1mYW1pbHk6IHZlcmRh bmEsc2Fucy1zZXJpZjsiPjxiPlJlZ2FyZHMsPC9iPjwvaT48YnI+PGZvbnQgY29sb3I9IiM4ODg4 ODgiPk1haGVzaCBHYWphYmFyPGJyPgo8L2ZvbnQ+PC9kaXY+PGJyPgo= --===============0315605588303251093==-- From carl.wiedemann@gmail.com Wed Jan 12 07:05:52 2011 From: Carl Wiedemann To: development@drupal.org Subject: Re: [development] creating pop-up window for delete and edit actions in table in module file Date: Wed, 12 Jan 2011 00:05:48 -0700 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4541316935476326442==" --===============4541316935476326442== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Consider http://drupal.org/project/popups On Tue, Jan 11, 2011 at 11:37 PM, mahesh gajabar wrote: > Hi, > > I have written a custome module table for showing some information which is > fetched from database and every row is having edit and delete actions. Both > are working fine. But whenever I click on on edit or delete action action it > opens in other window leaving current page. I want these actions to be taken > place in pop-up window. > > My table on drupal screen is as follows > > *SlNo* > > *Doctor Name* > > *Gender* > > *Status* > > *Action* > > 2 > > Jayaram Srinivasan > > male > > inactive > > Edit | Delete > > 3 > > Pavithra M > > female > > active > > Edit | Delete > > 4 > > Ravi Mandayam > > male > > active > > Edit | Delete > > when i click delete button i should get pop-up window with the dialogue > like this; > > Are You Sure You Want To Delete This Doctor? This action cannot be undone. > Cancel > > When I click edit button I should get my edit form, > First Name: > Last Name: > Gender: > male > female > Status: > active > inactive > Cancel > > complete code of my module file is as follows: > > * > function doctor_menu() { > $items =3D array(); > > $items['doctor'] =3D array( > 'title' =3D> t('Doctors'), > 'page callback' =3D>'doctors_list', > 'access arguments' =3D> array('access doctor'), > 'type' =3D> MENU_NORMAL_ITEM, > ); > > $items['doctor/delete/%doctor_user'] =3D array( > 'title' =3D> t('Delete doctor'), > 'page callback' =3D> 'drupal_get_form', > 'page arguments' =3D> array('doctor_delete_confirm', 2), > 'access arguments' =3D> array('access doctor'), > 'type' =3D> MENU_CALLBACK, > ); > $items['doctor/edit/%doctor_user'] =3D array( > 'title' =3D> t('Edit Form'), > 'page callback' =3D> 'drupal_get_form', > 'page arguments' =3D> array('doctor_edit_confirm', 2), > 'access arguments' =3D> array('access doctor'), > 'type' =3D> MENU_NORMAL_ITEM, > ); > return $items; > } > > function doctors_list() { > $header =3D array(t(Sl.No),t('Doctor Name'), t('Gender'), t('Status'), > t('Action')); > > $query =3D "SELECT * FROM {doctor}"; > $rs =3D db_query($query); > > $row =3D array(); > > if ($rs) { > while ($data =3D db_fetch_object($rs)) { > $doctorid =3D > $data->doctorid; > $gender =3D $data->gender; > $status =3D $data->status ; > $row[] =3D > array($doctorid,stripslashes(ucwords($data->firstname)) . ' ' . > stripslashes(ucwords($data->lastname)), $gender, $status, > "doctorid}'>" . t('Edit') . " > |doctorid}'> ". t('Delete')."" ); > } > } > > $str .=3D theme_table($header, $row); > > return $str; > } > function doctor_user_load($doctorid) { > $query =3D "SELECT * FROM {doctor} WHERE doctorid =3D %d"; > $rs =3D db_query($query, $doctorid); > > if ($rs) { > while ($data =3D db_fetch_object($rs)) { > return $data; > } > } > > return FALSE; > } > > function popup() > { > window.confirm(); > return false; > } > > function doctor_delete_confirm(&$form_state, $doctor) { > $form['_doctor'] =3D array( > '#type' =3D> 'value', > '#value' =3D> $doctor, > ); > > return confirm_form($form, > t('Are you sure you want to delete this doctor?'), > isset($_GET['destination']) ? $_GET['destination'] : "doctor", > t('This action cannot be undone.'), > t('Delete'), > t('Cancel')); > } > > function doctor_delete_confirm_submit($form, &$form_state) { > $form_values =3D $form_state['values']; > > if ($form_state['values']['confirm']) { > $doctor =3D $form_state['values']['_doctor']; > > $query =3D "DELETE FROM {doctor} where > doctorid=3D $doctor->doctorid"; > $rs =3D db_query($query); > drupal_set_message(t('Doctor has been deleted successfully.')); > } drupal_goto("doctor"); > } > > function doctor_edit_confirm(&$form_state,$doctor){ > $form =3D array(); > $form['_doctors'] =3D array( > '#type' =3D> 'value', > '#value' =3D> $doctor, > ); > > $query =3D "SELECT * FROM {doctor} where doctorid=3D%d"; > $rs =3D db_query($query,$doctor->doctorid); > $data=3Ddb_fetch_object($rs); > $firstname=3D$data->firstname; > $lastname=3D$data->lastname; > $gender1 =3D $data->gender; > $gender =3D $gender1 ? 0: 1; > $status1 =3D $data->status ; > $status =3D $status1 ? 1: 0; > $form['firstname']=3Darray( > '#title'=3D>t('First Name'), > '#type'=3D>'textfield', > '#default_value'=3D>$data->firstname, > > ); > $form['lastname']=3Darray( > '#title'=3D>t('Last Name'), > '#type'=3D>'textfield', > '#default_value' =3D> $lastname, > ); > $form['gender']=3Darray( > '#title'=3D>t('Gender'), > '#type'=3D>'radios', > > '#options' =3D> array(t('male'), > t('female')), > '#default_value' =3D> > variable_get('gender',$gender), > ); > $form['status']=3Darray( > '#title'=3D>t('Status'), > '#type'=3D>'radios', > '#options' =3D> array(t('active'), > t('inactive')), > '#default_value' =3D> > variable_get('status',$status), > > ); > > return confirm_form($form,t(''), > isset($_GET['destination']) ? $_GET['destination'] : "doctor", > t(''), > t('Save'), > t('Cancel')); > } > > function doctor_edit_confirm_submit($form, &$form_state) > { > if ($form_state['values']['confirm']) { > $doctor =3D $form_state['values']['_doctors']; > $form_state['values']['doctorid'] =3D $doctor->doctorid; > $firstname =3D $form_state['values']['firstname']; > $lastname =3D $form_state['values']['lastname']; > $gender1=3D $form_state['values']['gender']; > $gender =3D $gender1 ? t('female') : t('male'); > $status1 =3D $form_state['values']['status']; > $status =3D $status1 ? t('inactive') : t('active'); > $query =3D "UPDATE {doctor} SET firstname =3D '$firstname', lastname=3D > '$lastname', gender =3D '$gender', status =3D '$status' WHERE doctorid= =3D%d"; > $rs =3D db_query($query,$doctor->doctorid); } > drupal_goto("doctor"); > } > > *Any help appreciated.* > > * > *Regards,* > Mahesh Gajabar > > --===============4541316935476326442== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 Q29uc2lkZXKgPGEgaHJlZj0iaHR0cDovL2RydXBhbC5vcmcvcHJvamVjdC9wb3B1cHMiPmh0dHA6 Ly9kcnVwYWwub3JnL3Byb2plY3QvcG9wdXBzPC9hPjxicj48YnI+PGRpdiBjbGFzcz0iZ21haWxf cXVvdGUiPk9uIFR1ZSwgSmFuIDExLCAyMDExIGF0IDExOjM3IFBNLCBtYWhlc2ggZ2FqYWJhciA8 c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0bzptYWhlc2gxNDNhbkBnbWFpbC5jb20i Pm1haGVzaDE0M2FuQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1 b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1s ZWZ0OjFweCAjY2NjIHNvbGlkO3BhZGRpbmctbGVmdDoxZXg7Ij5IaSw8ZGl2PjxkaXY+PC9kaXY+ PGRpdiBjbGFzcz0iaDUiPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+SSBoYXZlIHdyaXR0 ZW4gYSBjdXN0b21lIG1vZHVsZSB0YWJsZSBmb3Igc2hvd2luZyBzb21lIGluZm9ybWF0aW9uIHdo aWNoIGlzIGZldGNoZWQgZnJvbSBkYXRhYmFzZSBhbmQgZXZlcnkgcm93IGlzIGhhdmluZyBlZGl0 IGFuZCBkZWxldGUgYWN0aW9ucy4gQm90aCBhcmUgd29ya2luZyBmaW5lLiBCdXQgd2hlbmV2ZXIg SSBjbGljayBvbiBvbiBlZGl0IG9yIGRlbGV0ZSBhY3Rpb24gYWN0aW9uIGl0IG9wZW5zIGluIG90 aGVyIHdpbmRvdyBsZWF2aW5nIGN1cnJlbnQgcGFnZS4gSSB3YW50IHRoZXNlIGFjdGlvbnMgdG8g YmUgdGFrZW4gcGxhY2UgaW4gcG9wLXVwIHdpbmRvdy4gPGJyPgoKCjxicj5NeSB0YWJsZSBvbiBk cnVwYWwgc2NyZWVuIGlzIGFzIGZvbGxvd3M8YnI+PGJyPgoKPHRhYmxlIGJvcmRlcj0iMCIgY2Vs bHBhZGRpbmc9IjAiPgogPHRoZWFkPgogIDx0cj4KICAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVw dCI+CiAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0 O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0Om5vcm1hbCIgYWxpZ249ImNlbnRlciI+PGI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBS b21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OyI+U2xObzwvc3Bhbj48L2I+PC9wPgoKCiAgIDwv dGQ+CiAgIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhl aWdodDpub3JtYWwiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJw dDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVv dDsiPkRvY3RvcgogICBOYW1lPC9zcGFuPjwvYj48L3A+CiAgIDwvdGQ+CiAgIDx0ZCBzdHlsZT0i cGFkZGluZzowLjc1cHQiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJv dHRvbTowLjAwMDFwdDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDpub3JtYWwiIGFsaWdu PSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVv dDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsiPkdlbmRlcjwvc3Bhbj48 L2I+PC9wPgoKCiAgIDwvdGQ+CiAgIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogICA8cCBj bGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDt0ZXh0LWFsaWdu OmNlbnRlcjtsaW5lLWhlaWdodDpub3JtYWwiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDss JnF1b3Q7c2VyaWYmcXVvdDsiPlN0YXR1czwvc3Bhbj48L2I+PC9wPgoKCiAgIDwvdGQ+CiAgIDx0 ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWJvdHRvbTowLjAwMDFwdDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDpub3Jt YWwiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtmb250LWZh bWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsiPkFjdGlv bjwvc3Bhbj48L2I+PC9wPgoKCiAgIDwvdGQ+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+PHRy PgogIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90 OywmcXVvdDtzZXJpZiZxdW90OyI+Mjwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBh ZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRv bTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJw dDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVv dDsiPkpheWFyYW0gU3Jpbml2YXNhbjwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBh ZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRv bTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJw dDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVv dDsiPm1hbGU8L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+ CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGlu ZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5pbmFjdGl2ZTwv c3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBhZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDtsaW5lLWhlaWdodDpu b3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1l cyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsiPjxhIGhyZWY9Imh0dHA6Ly9sb2Nh bGhvc3QvZnIvZG9jdG9yL2VkaXQvMiIgdGFyZ2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxlPSJjb2xv cjpibHVlIj5FZGl0PC9zcGFuPjwvYT4KICB8PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9k b2N0b3IvZGVsZXRlLzIiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+ CiAgRGVsZXRlPC9zcGFuPjwvYT48L3NwYW4+PC9wPgogIDwvdGQ+CiA8L3RyPgogPHRyPgogIDx0 ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVv dDtzZXJpZiZxdW90OyI+Mzwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5bGU9InBhZGRpbmc6 MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAw MDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtmb250 LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsiPlBh dml0aHJhIE08L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+ CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGlu ZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5mZW1hbGU8L3Nw YW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6bm9y bWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMg TmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5hY3RpdmU8L3NwYW4+PC9wPgogIDwv dGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij48YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rv ci9lZGl0LzMiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+RWRpdDwv c3Bhbj48L2E+CiAgfDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yL2RlbGV0ZS8z IiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPgogIERlbGV0ZTwvc3Bh bj48L2E+PC9zcGFuPjwvcD4KICA8L3RkPgogPC90cj4KIDx0cj4KICA8dGQgc3R5bGU9InBhZGRp bmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTow LjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtm b250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsi PjQ8L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWln aHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5SYXZpIE1hbmRheWFtPC9z cGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNz PSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5v cm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVz IE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OyI+bWFsZTwvc3Bhbj48L3A+CiAgPC90 ZD4KICA8dGQgc3R5bGU9InBhZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVv dDssJnF1b3Q7c2VyaWYmcXVvdDsiPmFjdGl2ZTwvc3Bhbj48L3A+CiAgPC90ZD4KICA8dGQgc3R5 bGU9InBhZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu LWJvdHRvbTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNp emU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2Vy aWYmcXVvdDsiPjxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yL2VkaXQvNCIgdGFy Z2V0PSJfYmxhbmsiPjxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5FZGl0PC9zcGFuPjwvYT4KICB8 PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IvZGVsZXRlLzQiIHRhcmdldD0iX2Js YW5rIj48c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+CiAgRGVsZXRlPC9zcGFuPjwvYT48L3NwYW4+ PC9wPgogIDwvdGQ+CiA8L3RyPgo8L3Rib2R5PjwvdGFibGU+Cgo8YnI+d2hlbiBpIGNsaWNrIGRl bGV0ZSBidXR0b24gaSBzaG91bGQgZ2V0IHBvcC11cCB3aW5kb3cgd2l0aCB0aGUgZGlhbG9ndWUg bGlrZSB0aGlzOzxicj48YnI+PGgyPkFyZSBZb3UgU3VyZSBZb3UgV2FudCBUbyBEZWxldGUgVGhp cyBEb2N0b3I/PC9oMj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClRo aXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuPGlucHV0IG5hbWU9ImNvbmZpcm0iIHZhbHVlPSIx IiB0eXBlPSJoaWRkZW4iPgo8ZGl2PjxpbnB1dCBuYW1lPSJvcCIgdmFsdWU9IkRlbGV0ZSIgdHlw ZT0ic3VibWl0Ij4KPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IiIHRhcmdldD0i X2JsYW5rIj5DYW5jZWw8L2E+PGJyPjxicj5XaGVuIEkgY2xpY2sgZWRpdCBidXR0b24gSSBzaG91 bGQgZ2V0IG15IGVkaXQgZm9ybSw8YnI+PHNwYW4+PGRpdj48L2Rpdj48L3NwYW4+CQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjxkaXY+CiA8bGFiZWw+Rmlyc3QgTmFt ZTogPC9sYWJlbD4KIDxpbnB1dCBtYXhsZW5ndGg9IjEyOCIgbmFtZT0iZmlyc3RuYW1lIiBzaXpl PSI2MCIgdmFsdWU9ImpheWFyYW0iIHR5cGU9InRleHQiPgo8L2Rpdj4KPGRpdj4KIDxsYWJlbD5M YXN0IE5hbWU6IDwvbGFiZWw+CiA8aW5wdXQgbWF4bGVuZ3RoPSIxMjgiIG5hbWU9Imxhc3RuYW1l IiBzaXplPSI2MCIgdmFsdWU9InNyaW5pdmFzYW4iIHR5cGU9InRleHQiPgo8L2Rpdj4KPGRpdj4K IDxsYWJlbD5HZW5kZXI6IDwvbGFiZWw+CiA8ZGl2PjxkaXY+CiA8bGFiZWw+PGlucHV0IG5hbWU9 ImdlbmRlciIgdmFsdWU9IjAiIGNoZWNrZWQgdHlwZT0icmFkaW8iPiBtYWxlPC9sYWJlbD4KPC9k aXY+CjxkaXY+CiA8bGFiZWw+PGlucHV0IG5hbWU9ImdlbmRlciIgdmFsdWU9IjEiIHR5cGU9InJh ZGlvIj4gZmVtYWxlPC9sYWJlbD4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPGRpdj4KIDxsYWJlbD5T dGF0dXM6IDwvbGFiZWw+CiA8ZGl2PjxkaXY+CiA8bGFiZWw+PGlucHV0IG5hbWU9InN0YXR1cyIg dmFsdWU9IjAiIHR5cGU9InJhZGlvIj4gYWN0aXZlPC9sYWJlbD4KPC9kaXY+CjxkaXY+CiA8bGFi ZWw+PGlucHV0IG5hbWU9InN0YXR1cyIgdmFsdWU9IjEiIGNoZWNrZWQgdHlwZT0icmFkaW8iPiBp bmFjdGl2ZTwvbGFiZWw+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxpbnB1dCBuYW1lPSJjb25maXJt IiB2YWx1ZT0iMSIgdHlwZT0iaGlkZGVuIj4KPGRpdj48aW5wdXQgbmFtZT0ib3AiIHZhbHVlPSJT YXZlIiB0eXBlPSJzdWJtaXQiPgo8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3RvciIg dGFyZ2V0PSJfYmxhbmsiPkNhbmNlbDwvYT48L2Rpdj6gPGJyPmNvbXBsZXRlIGNvZGUgb2YgbXkg bW9kdWxlIGZpbGUgaXMgYXMgZm9sbG93czo8YnI+PGJyPjxpIHN0eWxlPSJmb250LWZhbWlseTp2 ZXJkYW5hLHNhbnMtc2VyaWYiPjxiPiZsdDs/cGhwPGJyPjxicj5mdW5jdGlvbiBkb2N0b3JfbWVu dSgpIHs8YnI+oCAkaXRlbXMgPSBhcnJheSgpOzxicj4KCgqgPGJyPqAgJGl0ZW1zWyYjMzk7ZG9j dG9yJiMzOTtdID0gYXJyYXkoPGJyPqCgoCAmIzM5O3RpdGxlJiMzOTsgPSZndDsgdCgmIzM5O0Rv Y3RvcnMmIzM5OyksPGJyPqCgoCAmIzM5O3BhZ2UgY2FsbGJhY2smIzM5OyA9Jmd0OyYjMzk7ZG9j dG9yc19saXN0JiMzOTssPGJyPqCgoCAmIzM5O2FjY2VzcyBhcmd1bWVudHMmIzM5OyA9Jmd0OyBh cnJheSgmIzM5O2FjY2VzcyBkb2N0b3ImIzM5OyksPGJyPgoKCqCgoCAmIzM5O3R5cGUmIzM5OyA9 Jmd0OyBNRU5VX05PUk1BTF9JVEVNLDxicj6gICk7PGJyPqA8YnI+oCAkaXRlbXNbJiMzOTtkb2N0 b3IvZGVsZXRlLyVkb2N0b3JfdXNlciYjMzk7XSA9IGFycmF5KDxicj6goKAgJiMzOTt0aXRsZSYj Mzk7ID0mZ3Q7IHQoJiMzOTtEZWxldGUgZG9jdG9yJiMzOTspLDxicj6goKAgJiMzOTtwYWdlIGNh bGxiYWNrJiMzOTsgPSZndDsgJiMzOTtkcnVwYWxfZ2V0X2Zvcm0mIzM5Oyw8YnI+CgoKoKCgICYj Mzk7cGFnZSBhcmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2RvY3Rvcl9kZWxldGVfY29u ZmlybSYjMzk7LCAyKSw8YnI+oKCgICYjMzk7YWNjZXNzIGFyZ3VtZW50cyYjMzk7ID0mZ3Q7IGFy cmF5KCYjMzk7YWNjZXNzIGRvY3RvciYjMzk7KSw8YnI+oKCgICYjMzk7dHlwZSYjMzk7ID0mZ3Q7 IE1FTlVfQ0FMTEJBQ0ssPGJyPqAgKTs8YnI+oCRpdGVtc1smIzM5O2RvY3Rvci9lZGl0LyVkb2N0 b3JfdXNlciYjMzk7XSA9IGFycmF5KDxicj4KCgqgoKAgJiMzOTt0aXRsZSYjMzk7ID0mZ3Q7IHQo JiMzOTtFZGl0IEZvcm0mIzM5OyksPGJyPqCgoCAmIzM5O3BhZ2UgY2FsbGJhY2smIzM5OyA9Jmd0 OyAmIzM5O2RydXBhbF9nZXRfZm9ybSYjMzk7LDxicj4mIzM5O3BhZ2UgYXJndW1lbnRzJiMzOTsg PSZndDsgYXJyYXkoJiMzOTtkb2N0b3JfZWRpdF9jb25maXJtJiMzOTssIDIpLDxicj6goCAmIzM5 O2FjY2VzcyBhcmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2FjY2VzcyBkb2N0b3ImIzM5 OyksPGJyPgoKCqCgoCAmIzM5O3R5cGUmIzM5OyA9Jmd0OyBNRU5VX05PUk1BTF9JVEVNLDxicj6g ICk7PGJyPqAgcmV0dXJuICRpdGVtczs8YnI+fTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yc19saXN0 KCkgezxicj6goKAgJGhlYWRlciA9IGFycmF5KHQoU2wuTm8pLHQoJiMzOTtEb2N0b3IgTmFtZSYj Mzk7KSwgdCgmIzM5O0dlbmRlciYjMzk7KSygIHQoJiMzOTtTdGF0dXMmIzM5OyksIHQoJiMzOTtB Y3Rpb24mIzM5OykpOzxicj4KCgqgPGJyPqCgoCAkcXVlcnkgPSAmcXVvdDtTRUxFQ1QgKiBGUk9N IHtkb2N0b3J9JnF1b3Q7Ozxicj6goKAgJHJzID0gZGJfcXVlcnkoJHF1ZXJ5KTs8YnI+oDxicj6g oKAgJHJvdyA9IGFycmF5KCk7PGJyPqA8YnI+oKCgIGlmICgkcnMpIHs8YnI+oKCgIKCgoCB3aGls ZSAoJGRhdGEgPSBkYl9mZXRjaF9vYmplY3QoJHJzKSkgezxicj6goKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAkZG9jdG9yaWQgPSAkZGF0YS0mZ3Q7 ZG9jdG9yaWQ7PGJyPgoKCqCgoCCgoKAgoKCgICRnZW5kZXIgPSAkZGF0YS0mZ3Q7Z2VuZGVyOzxi cj6goKAgoKCgIKCgoCAkc3RhdHVzID0gJGRhdGEtJmd0O3N0YXR1cyA7PGJyPqCgoCCgoKAgoKCg ICRyb3dbXSA9IGFycmF5KCRkb2N0b3JpZCxzdHJpcHNsYXNoZXModWN3b3JkcygkZGF0YS0mZ3Q7 Zmlyc3RuYW1lKSkgLiAmIzM5OyAmIzM5OyAuIHN0cmlwc2xhc2hlcyh1Y3dvcmRzKCRkYXRhLSZn dDtsYXN0bmFtZSkpLCAkZ2VuZGVyLCAkc3RhdHVzLCA8YnI+CgoKoKCgIKCgoCCgoKAgJnF1b3Q7 Jmx0O2EgaHJlZj0mIzM5O2RvY3Rvci9lZGl0L3skZGF0YS0mZ3Q7ZG9jdG9yaWR9JiMzOTsmZ3Q7 JnF1b3Q7IC4gdCgmIzM5O0VkaXQmIzM5OykgLqAgJnF1b3Q7Jmx0Oy9hJmd0OyB8Jmx0O2EgaHJl Zj0mIzM5O2RvY3Rvci9kZWxldGUveyRkYXRhLSZndDtkb2N0b3JpZH0mIzM5OyZndDsgJnF1b3Q7 LiB0KCYjMzk7RGVsZXRlJiMzOTspLiZxdW90OyZsdDsvYSZndDsmcXVvdDsgKTs8YnI+CgoKoKCg IKCgoCB9PGJyPqCgoCB9PGJyPqA8YnI+oKCgICRzdHIgLj0gdGhlbWVfdGFibGUoJGhlYWRlciwg JHJvdyk7PGJyPqA8YnI+oKCgIHJldHVybiAkc3RyOzxicj59PGJyPmZ1bmN0aW9uIGRvY3Rvcl91 c2VyX2xvYWQoJGRvY3RvcmlkKSB7PGJyPqCgoCAkcXVlcnkgPSAmcXVvdDtTRUxFQ1QgKiBGUk9N IHtkb2N0b3J9IFdIRVJFIGRvY3RvcmlkID0gJWQmcXVvdDs7PGJyPqCgoCAkcnMgPSBkYl9xdWVy eSgkcXVlcnksICRkb2N0b3JpZCk7PGJyPgoKCqA8YnI+oKCgIGlmICgkcnMpIHs8YnI+oKCgIKCg oCB3aGlsZSAoJGRhdGEgPSBkYl9mZXRjaF9vYmplY3QoJHJzKSkgezxicj6goKAgoKCgIKCgoCBy ZXR1cm4gJGRhdGE7PGJyPqCgoCCgoKAgfTxicj6goKAgfTxicj6gPGJyPqCgoCByZXR1cm4gRkFM U0U7PGJyPn08YnI+PGJyPmZ1bmN0aW9uIHBvcHVwKCk8YnI+ezxicj53aW5kb3cuY29uZmlybSgp Ozxicj5yZXR1cm4gZmFsc2U7PGJyPgoKCn08YnI+PGJyPmZ1bmN0aW9uIGRvY3Rvcl9kZWxldGVf Y29uZmlybSgmYW1wOyRmb3JtX3N0YXRlLCAkZG9jdG9yKSB7PGJyPqCgoCAkZm9ybVsmIzM5O19k b2N0b3ImIzM5O10gPSBhcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMzOTsgPSZndDsgJiMz OTt2YWx1ZSYjMzk7LDxicj6goKAgoKCgICYjMzk7I3ZhbHVlJiMzOTsgPSZndDsgJGRvY3Rvciw8 YnI+oKCgICk7PGJyPqA8YnI+CgoKoKCgIHJldHVybiBjb25maXJtX2Zvcm0oJGZvcm0sPGJyPqCg oCCgoKAgdCgmIzM5O0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBkb2N0b3I/ JiMzOTspLDxicj6goKAgoKCgIGlzc2V0KCRfR0VUWyYjMzk7ZGVzdGluYXRpb24mIzM5O10pID8g JF9HRVRbJiMzOTtkZXN0aW5hdGlvbiYjMzk7XSA6ICZxdW90O2RvY3RvciZxdW90Oyw8YnI+oKCg IKCgoCB0KCYjMzk7VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4mIzM5OyksPGJyPgoKCqCg oCCgoKAgdCgmIzM5O0RlbGV0ZSYjMzk7KSw8YnI+oKCgIKCgoCB0KCYjMzk7Q2FuY2VsJiMzOTsp KTs8YnI+fTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX2RlbGV0ZV9jb25maXJtX3N1Ym1pdCgkZm9y bSwgJmFtcDskZm9ybV9zdGF0ZSkgezxicj6goKAgJGZvcm1fdmFsdWVzID0gJGZvcm1fc3RhdGVb JiMzOTt2YWx1ZXMmIzM5O107PGJyPqA8YnI+oKCgIGlmICgkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVl cyYjMzk7XVsmIzM5O2NvbmZpcm0mIzM5O10pIHs8YnI+CgoKoKCgIKCgoCAkZG9jdG9yID0gJGZv cm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5O11bJiMzOTtfZG9jdG9yJiMzOTtdOzxicj6goKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgJHF1ZXJ5ID0gJnF1b3Q7REVMRVRFoCBGUk9NIHtkb2N0b3J9IHdoZXJl IGRvY3RvcmlkPSAkZG9jdG9yLSZndDtkb2N0b3JpZCZxdW90Ozs8YnI+CgoKoKCgIKCgoKCgoKCg oKCgoKCgoKCgoCAkcnMgPSBkYl9xdWVyeSgkcXVlcnkpOzxicj5kcnVwYWxfc2V0X21lc3NhZ2Uo dCgmIzM5O0RvY3RvciBoYXMgYmVlbiBkZWxldGVkIHN1Y2Nlc3NmdWxseS4mIzM5OykpOzxicj6g IKCgoCB9oCBkcnVwYWxfZ290bygmcXVvdDtkb2N0b3ImcXVvdDspOzxicj59PGJyPjxicj5mdW5j dGlvbiBkb2N0b3JfZWRpdF9jb25maXJtKCZhbXA7JGZvcm1fc3RhdGUsJGRvY3Rvcil7PGJyPgoK CqAkZm9ybSA9IGFycmF5KCk7PGJyPiRmb3JtWyYjMzk7X2RvY3RvcnMmIzM5O10gPSBhcnJheSg8 YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMzOTsgPSZndDsgJiMzOTt2YWx1ZSYjMzk7LDxicj6goKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMzOTsjdmFsdWUmIzM5OyA9Jmd0OyAk ZG9jdG9yLDxicj6goKAgoKCgICk7PGJyPjxicj4kcXVlcnkgPSAmcXVvdDtTRUxFQ1QgKiBGUk9N IHtkb2N0b3J9IHdoZXJlIGRvY3RvcmlkPSVkJnF1b3Q7Ozxicj4KCgqgoKAgJHJzID0gZGJfcXVl cnkoJHF1ZXJ5LCRkb2N0b3ItJmd0O2RvY3RvcmlkKTs8YnI+JGRhdGE9ZGJfZmV0Y2hfb2JqZWN0 KCRycyk7PGJyPiRmaXJzdG5hbWU9JGRhdGEtJmd0O2ZpcnN0bmFtZTs8YnI+JGxhc3RuYW1lPSRk YXRhLSZndDtsYXN0bmFtZTs8YnI+JGdlbmRlcjEgPSAkZGF0YS0mZ3Q7Z2VuZGVyOzxicj4kZ2Vu ZGVyID0gJGdlbmRlcjEgPyAwOiAxOzxicj4kc3RhdHVzMSA9ICRkYXRhLSZndDtzdGF0dXMgOzxi cj4KCgokc3RhdHVzID0gJHN0YXR1czEgPyAxOiAwOzxicj4kZm9ybVsmIzM5O2ZpcnN0bmFtZSYj Mzk7XT1hcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0aXRsZSYjMzk7PSZndDt0KCYjMzk7Rmlyc3Qg TmFtZSYjMzk7KSw8YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMzOTs9Jmd0OyYjMzk7dGV4dGZpZWxk JiMzOTssPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMzOTsjZGVmYXVs dF92YWx1ZSYjMzk7PSZndDskZGF0YS0mZ3Q7Zmlyc3RuYW1lLDxicj4KCgqgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoCA8YnI+oCApOzxicj4kZm9ybVsmIzM5O2xhc3RuYW1lJiMz OTtdPWFycmF5KDxicj6goKAgoKCgICYjMzk7I3RpdGxlJiMzOTs9Jmd0O3QoJiMzOTtMYXN0IE5h bWUmIzM5OyksPGJyPqCgoCCgoKAgJiMzOTsjdHlwZSYjMzk7PSZndDsmIzM5O3RleHRmaWVsZCYj Mzk7LDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMzOTsjZGVmYXVs dF92YWx1ZSYjMzk7ID0mZ3Q7ICRsYXN0bmFtZSw8YnI+CgoKoKCgICk7PGJyPiRmb3JtWyYjMzk7 Z2VuZGVyJiMzOTtdPWFycmF5KDxicj6goKAgoKCgICYjMzk7I3RpdGxlJiMzOTs9Jmd0O3QoJiMz OTtHZW5kZXImIzM5OyksPGJyPqCgoCCgoKAgJiMzOTsjdHlwZSYjMzk7PSZndDsmIzM5O3JhZGlv cyYjMzk7LDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIDxicj6goKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICYjMzk7I29wdGlvbnMmIzM5OyA9Jmd0OyBhcnJh eSh0KCYjMzk7bWFsZSYjMzk7KSwgdCgmIzM5O2ZlbWFsZSYjMzk7KSksPGJyPgoKCqCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAmIzM5OyNkZWZhdWx0X3ZhbHVlJiMzOTsgPSZn dDsgdmFyaWFibGVfZ2V0KCYjMzk7Z2VuZGVyJiMzOTssJGdlbmRlciksPGJyPqCgoCApOzxicj4k Zm9ybVsmIzM5O3N0YXR1cyYjMzk7XT1hcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0aXRsZSYjMzk7 PSZndDt0KCYjMzk7U3RhdHVzJiMzOTspLDxicj6goKAgoKCgICYjMzk7I3R5cGUmIzM5Oz0mZ3Q7 JiMzOTtyYWRpb3MmIzM5Oyw8YnI+CgoKoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICYj Mzk7I29wdGlvbnMmIzM5OyA9Jmd0OyBhcnJheSh0KCYjMzk7YWN0aXZlJiMzOTspLCB0KCYjMzk7 aW5hY3RpdmUmIzM5OykpLDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICYjMzk7 I2RlZmF1bHRfdmFsdWUmIzM5OyA9Jmd0OyB2YXJpYWJsZV9nZXQoJiMzOTtzdGF0dXMmIzM5Oywk c3RhdHVzKSw8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCA8YnI+CgoK oKCgICk7PGJyPqCgoCA8YnI+cmV0dXJuIGNvbmZpcm1fZm9ybSgkZm9ybSx0KCYjMzk7JiMzOTsp LDxicj6goKAgoKCgIGlzc2V0KCRfR0VUWyYjMzk7ZGVzdGluYXRpb24mIzM5O10pID8gJF9HRVRb JiMzOTtkZXN0aW5hdGlvbiYjMzk7XSA6ICZxdW90O2RvY3RvciZxdW90Oyw8YnI+oKCgIKCgoCB0 KCYjMzk7JiMzOTspLDxicj6goKAgoKCgIHQoJiMzOTtTYXZlJiMzOTspLDxicj6goKAgoKCgIHQo JiMzOTtDYW5jZWwmIzM5OykpOzxicj4KCgp9PGJyPjxicj5mdW5jdGlvbiBkb2N0b3JfZWRpdF9j b25maXJtX3N1Ym1pdCgkZm9ybSwgJmFtcDskZm9ybV9zdGF0ZSk8YnI+ezxicj5pZiAoJGZvcm1f c3RhdGVbJiMzOTt2YWx1ZXMmIzM5O11bJiMzOTtjb25maXJtJiMzOTtdKSB7PGJyPiRkb2N0b3Ig PSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O19kb2N0b3JzJiMzOTtdOzxicj4k Zm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O2RvY3RvcmlkJiMzOTtdID0gJGRvY3Rv ci0mZ3Q7ZG9jdG9yaWQ7PGJyPgoKCqAkZmlyc3RuYW1lID0gJGZvcm1fc3RhdGVbJiMzOTt2YWx1 ZXMmIzM5O11bJiMzOTtmaXJzdG5hbWUmIzM5O107PGJyPqCgoCAkbGFzdG5hbWUgPSAkZm9ybV9z dGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O2xhc3RuYW1lJiMzOTtdOzxicj6goKAgJGdlbmRl cjE9ICRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYjMzk7Z2VuZGVyJiMzOTtdOzxicj4k Z2VuZGVyID2gICRnZW5kZXIxID8gdCgmIzM5O2ZlbWFsZSYjMzk7KSA6IHQoJiMzOTttYWxlJiMz OTspOzxicj4KCgqgoKAgJHN0YXR1czEgPSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsm IzM5O3N0YXR1cyYjMzk7XTs8YnI+JHN0YXR1cyA9ICRzdGF0dXMxID8gdCgmIzM5O2luYWN0aXZl JiMzOTspIDogdCgmIzM5O2FjdGl2ZSYjMzk7KTs8YnI+JHF1ZXJ5ID0gJnF1b3Q7VVBEQVRFoCB7 ZG9jdG9yfSBTRVQgZmlyc3RuYW1lID0gJiMzOTskZmlyc3RuYW1lJiMzOTssIGxhc3RuYW1lPSAm IzM5OyRsYXN0bmFtZSYjMzk7LKAgZ2VuZGVyID0gJiMzOTskZ2VuZGVyJiMzOTssIHN0YXR1cyA9 ICYjMzk7JHN0YXR1cyYjMzk7oCBXSEVSRaAgZG9jdG9yaWQ9JWQmcXVvdDs7PGJyPgoKCqAkcnMg PSBkYl9xdWVyeSgkcXVlcnksJGRvY3Rvci0mZ3Q7ZG9jdG9yaWQpOyB9PGJyPmRydXBhbF9nb3Rv KCZxdW90O2RvY3RvciZxdW90Oyk7PGJyPn08YnI+PGJyPjwvYj48L2k+PHNwYW4gc3R5bGU9ImZv bnQtZmFtaWx5OnZlcmRhbmEsc2Fucy1zZXJpZiI+QW55IGhlbHAgYXBwcmVjaWF0ZWQuPC9zcGFu PjxpIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hLHNhbnMtc2VyaWYiPjxiPjxicj4KCgo8YnI+ PC9iPjwvaT48L2Rpdj48aSBzdHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxzYW5zLXNlcmlmIj48 Yj5SZWdhcmRzLDwvYj48L2k+PGJyPjxmb250IGNvbG9yPSIjODg4ODg4Ij5NYWhlc2ggR2FqYWJh cjxicj4KPC9mb250PjwvZGl2Pjxicj4KPC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxi cj4K --===============4541316935476326442==-- From vyasamit2007@gmail.com Wed Jan 12 07:14:18 2011 From: Amit Vyas To: development@drupal.org Subject: Re: [development] creating pop-up window for delete and edit actions in table in module file Date: Wed, 12 Jan 2011 12:43:53 +0530 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2398304263108711851==" --===============2398304263108711851== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Popups is what you want :-) On Wed, Jan 12, 2011 at 12:35 PM, Carl Wiedemann wrote: > Consider http://drupal.org/project/popups > > > On Tue, Jan 11, 2011 at 11:37 PM, mahesh gajabar wro= te: > >> Hi, >> >> I have written a custome module table for showing some information which >> is fetched from database and every row is having edit and delete actions. >> Both are working fine. But whenever I click on on edit or delete action >> action it opens in other window leaving current page. I want these actions >> to be taken place in pop-up window. >> >> My table on drupal screen is as follows >> >> *SlNo* >> >> *Doctor Name* >> >> *Gender* >> >> *Status* >> >> *Action* >> >> 2 >> >> Jayaram Srinivasan >> >> male >> >> inactive >> >> Edit | Delete >> >> 3 >> >> Pavithra M >> >> female >> >> active >> >> Edit | Delete >> >> 4 >> >> Ravi Mandayam >> >> male >> >> active >> >> Edit | Delete >> >> when i click delete button i should get pop-up window with the dialogue >> like this; >> >> Are You Sure You Want To Delete This Doctor? This action cannot be >> undone. >> Cancel >> >> When I click edit button I should get my edit form, >> First Name: >> Last Name: >> Gender: >> male >> female >> Status: >> active >> inactive >> Cancel >> >> complete code of my module file is as follows: >> >> *> >> function doctor_menu() { >> $items =3D array(); >> >> $items['doctor'] =3D array( >> 'title' =3D> t('Doctors'), >> 'page callback' =3D>'doctors_list', >> 'access arguments' =3D> array('access doctor'), >> 'type' =3D> MENU_NORMAL_ITEM, >> ); >> >> $items['doctor/delete/%doctor_user'] =3D array( >> 'title' =3D> t('Delete doctor'), >> 'page callback' =3D> 'drupal_get_form', >> 'page arguments' =3D> array('doctor_delete_confirm', 2), >> 'access arguments' =3D> array('access doctor'), >> 'type' =3D> MENU_CALLBACK, >> ); >> $items['doctor/edit/%doctor_user'] =3D array( >> 'title' =3D> t('Edit Form'), >> 'page callback' =3D> 'drupal_get_form', >> 'page arguments' =3D> array('doctor_edit_confirm', 2), >> 'access arguments' =3D> array('access doctor'), >> 'type' =3D> MENU_NORMAL_ITEM, >> ); >> return $items; >> } >> >> function doctors_list() { >> $header =3D array(t(Sl.No),t('Doctor Name'), t('Gender'), t('Status'), >> t('Action')); >> >> $query =3D "SELECT * FROM {doctor}"; >> $rs =3D db_query($query); >> >> $row =3D array(); >> >> if ($rs) { >> while ($data =3D db_fetch_object($rs)) { >> $doctorid =3D >> $data->doctorid; >> $gender =3D $data->gender; >> $status =3D $data->status ; >> $row[] =3D >> array($doctorid,stripslashes(ucwords($data->firstname)) . ' ' . >> stripslashes(ucwords($data->lastname)), $gender, $status, >> "doctorid}'>" . t('Edit') . >> " |doctorid}'> ". t('Delete')."" = ); >> } >> } >> >> $str .=3D theme_table($header, $row); >> >> return $str; >> } >> function doctor_user_load($doctorid) { >> $query =3D "SELECT * FROM {doctor} WHERE doctorid =3D %d"; >> $rs =3D db_query($query, $doctorid); >> >> if ($rs) { >> while ($data =3D db_fetch_object($rs)) { >> return $data; >> } >> } >> >> return FALSE; >> } >> >> function popup() >> { >> window.confirm(); >> return false; >> } >> >> function doctor_delete_confirm(&$form_state, $doctor) { >> $form['_doctor'] =3D array( >> '#type' =3D> 'value', >> '#value' =3D> $doctor, >> ); >> >> return confirm_form($form, >> t('Are you sure you want to delete this doctor?'), >> isset($_GET['destination']) ? $_GET['destination'] : "doctor", >> t('This action cannot be undone.'), >> t('Delete'), >> t('Cancel')); >> } >> >> function doctor_delete_confirm_submit($form, &$form_state) { >> $form_values =3D $form_state['values']; >> >> if ($form_state['values']['confirm']) { >> $doctor =3D $form_state['values']['_doctor']; >> >> $query =3D "DELETE FROM {doctor} whe= re >> doctorid=3D $doctor->doctorid"; >> $rs =3D db_query($query); >> drupal_set_message(t('Doctor has been deleted successfully.')); >> } drupal_goto("doctor"); >> } >> >> function doctor_edit_confirm(&$form_state,$doctor){ >> $form =3D array(); >> $form['_doctors'] =3D array( >> '#type' =3D> 'value', >> '#value' =3D> $doctor, >> ); >> >> $query =3D "SELECT * FROM {doctor} where doctorid=3D%d"; >> $rs =3D db_query($query,$doctor->doctorid); >> $data=3Ddb_fetch_object($rs); >> $firstname=3D$data->firstname; >> $lastname=3D$data->lastname; >> $gender1 =3D $data->gender; >> $gender =3D $gender1 ? 0: 1; >> $status1 =3D $data->status ; >> $status =3D $status1 ? 1: 0; >> $form['firstname']=3Darray( >> '#title'=3D>t('First Name'), >> '#type'=3D>'textfield', >> '#default_value'=3D>$data->firstname, >> >> ); >> $form['lastname']=3Darray( >> '#title'=3D>t('Last Name'), >> '#type'=3D>'textfield', >> '#default_value' =3D> $lastname, >> ); >> $form['gender']=3Darray( >> '#title'=3D>t('Gender'), >> '#type'=3D>'radios', >> >> '#options' =3D> array(t('male'), >> t('female')), >> '#default_value' =3D> >> variable_get('gender',$gender), >> ); >> $form['status']=3Darray( >> '#title'=3D>t('Status'), >> '#type'=3D>'radios', >> '#options' =3D> array(t('active'), >> t('inactive')), >> '#default_value' =3D> >> variable_get('status',$status), >> >> ); >> >> return confirm_form($form,t(''), >> isset($_GET['destination']) ? $_GET['destination'] : "doctor", >> t(''), >> t('Save'), >> t('Cancel')); >> } >> >> function doctor_edit_confirm_submit($form, &$form_state) >> { >> if ($form_state['values']['confirm']) { >> $doctor =3D $form_state['values']['_doctors']; >> $form_state['values']['doctorid'] =3D $doctor->doctorid; >> $firstname =3D $form_state['values']['firstname']; >> $lastname =3D $form_state['values']['lastname']; >> $gender1=3D $form_state['values']['gender']; >> $gender =3D $gender1 ? t('female') : t('male'); >> $status1 =3D $form_state['values']['status']; >> $status =3D $status1 ? t('inactive') : t('active'); >> $query =3D "UPDATE {doctor} SET firstname =3D '$firstname', lastname=3D >> '$lastname', gender =3D '$gender', status =3D '$status' WHERE doctorid= =3D%d"; >> $rs =3D db_query($query,$doctor->doctorid); } >> drupal_goto("doctor"); >> } >> >> *Any help appreciated.* >> >> * >> *Regards,* >> Mahesh Gajabar >> >> > --=20 Cheers, Amit Vyas ____________________________________________________________________ Email : amit.vyas@blisstering.com Skype : vyasamit2004 Mobile : +91 993-040-1490 Phone : +91-022 428-884-07 --===============2398304263108711851== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 UG9wdXBzIGlzIHdoYXQgeW91IHdhbnQgOi0pPGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90 ZSI+T24gV2VkLCBKYW4gMTIsIDIwMTEgYXQgMTI6MzUgUE0sIENhcmwgV2llZGVtYW5uIDxzcGFu IGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOmNhcmwud2llZGVtYW5uQGdtYWlsLmNvbSI+ Y2FybC53aWVkZW1hbm5AZ21haWwuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MCAwIDAgLjhleDtib3JkZXIt bGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6MWV4OyI+CgpDb25zaWRlcqA8YSBocmVm PSJodHRwOi8vZHJ1cGFsLm9yZy9wcm9qZWN0L3BvcHVwcyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6 Ly9kcnVwYWwub3JnL3Byb2plY3QvcG9wdXBzPC9hPjxkaXY+PGRpdj48L2Rpdj48ZGl2IGNsYXNz PSJoNSI+PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gVHVlLCBKYW4gMTEsIDIw MTEgYXQgMTE6MzcgUE0sIG1haGVzaCBnYWphYmFyIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJl Zj0ibWFpbHRvOm1haGVzaDE0M2FuQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPm1haGVzaDE0 M2FuQGdtYWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CgoKPGJsb2NrcXVvdGUgY2xh c3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4 ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+SGksPGRpdj48ZGl2PjwvZGl2PjxkaXY+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5JIGhhdmUgd3JpdHRlbiBhIGN1c3RvbWUgbW9kdWxl IHRhYmxlIGZvciBzaG93aW5nIHNvbWUgaW5mb3JtYXRpb24gd2hpY2ggaXMgZmV0Y2hlZCBmcm9t IGRhdGFiYXNlIGFuZCBldmVyeSByb3cgaXMgaGF2aW5nIGVkaXQgYW5kIGRlbGV0ZSBhY3Rpb25z LiBCb3RoIGFyZSB3b3JraW5nIGZpbmUuIEJ1dCB3aGVuZXZlciBJIGNsaWNrIG9uIG9uIGVkaXQg b3IgZGVsZXRlIGFjdGlvbiBhY3Rpb24gaXQgb3BlbnMgaW4gb3RoZXIgd2luZG93IGxlYXZpbmcg Y3VycmVudCBwYWdlLiBJIHdhbnQgdGhlc2UgYWN0aW9ucyB0byBiZSB0YWtlbiBwbGFjZSBpbiBw b3AtdXAgd2luZG93LiA8YnI+CgoKCgo8YnI+TXkgdGFibGUgb24gZHJ1cGFsIHNjcmVlbiBpcyBh cyBmb2xsb3dzPGJyPjxicj4KCjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIj4KIDx0 aGVhZD4KICA8dHI+CiAgIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogICA8cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDt0ZXh0LWFsaWduOmNlbnRl cjtsaW5lLWhlaWdodDpub3JtYWwiIGFsaWduPSJjZW50ZXIiPjxiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7 c2VyaWYmcXVvdDsiPlNsTm88L3NwYW4+PC9iPjwvcD4KCgogICA8L3RkPgogICA8dGQgc3R5bGU9 InBhZGRpbmc6MC43NXB0Ij4KICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1i b3R0b206MC4wMDAxcHQ7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6bm9ybWFsIiBhbGln bj0iY2VudGVyIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5Eb2N0b3IKICAgTmFt ZTwvc3Bhbj48L2I+PC9wPgogICA8L3RkPgogICA8dGQgc3R5bGU9InBhZGRpbmc6MC43NXB0Ij4K ICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7dGV4 dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6bm9ybWFsIiBhbGlnbj0iY2VudGVyIj48Yj48c3Bh biBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFu JnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5HZW5kZXI8L3NwYW4+PC9iPjwvcD4KCgogICA8L3Rk PgogICA8dGQgc3R5bGU9InBhZGRpbmc6MC43NXB0Ij4KICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWln aHQ6bm9ybWFsIiBhbGlnbj0iY2VudGVyIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7 Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7 Ij5TdGF0dXM8L3NwYW4+PC9iPjwvcD4KCgogICA8L3RkPgogICA8dGQgc3R5bGU9InBhZGRpbmc6 MC43NXB0Ij4KICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4w MDAxcHQ7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6bm9ybWFsIiBhbGlnbj0iY2VudGVy Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMg TmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5BY3Rpb248L3NwYW4+PC9iPjwvcD4K CgogICA8L3RkPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pjx0cj4KICA8dGQgc3R5bGU9InBh ZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRv bTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJw dDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVv dDsiPjI8L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAg PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1o ZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5KYXlhcmFtIFNyaW5p dmFzYW48L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAg PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1o ZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1 b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5tYWxlPC9zcGFuPjwv cD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBS b21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OyI+aW5hY3RpdmU8L3NwYW4+PC9wPgogIDwvdGQ+ CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7 LCZxdW90O3NlcmlmJnF1b3Q7Ij48YSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9l ZGl0LzIiIHRhcmdldD0iX2JsYW5rIj48c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+RWRpdDwvc3Bh bj48L2E+CiAgfDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yL2RlbGV0ZS8yIiB0 YXJnZXQ9Il9ibGFuayI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPgogIERlbGV0ZTwvc3Bhbj48 L2E+PC9zcGFuPjwvcD4KICA8L3RkPgogPC90cj4KIDx0cj4KICA8dGQgc3R5bGU9InBhZGRpbmc6 MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTowLjAw MDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTJwdDtmb250 LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssJnF1b3Q7c2VyaWYmcXVvdDsiPjM8 L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6 bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGlt ZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij5QYXZpdGhyYSBNPC9zcGFuPjwv cD4KICA8L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBS b21hbiZxdW90OywmcXVvdDtzZXJpZiZxdW90OyI+ZmVtYWxlPC9zcGFuPjwvcD4KICA8L3RkPgog IDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oywm cXVvdDtzZXJpZiZxdW90OyI+YWN0aXZlPC9zcGFuPjwvcD4KICA8L3RkPgogIDx0ZCBzdHlsZT0i cGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tYm90 dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtzZXJpZiZx dW90OyI+PGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IvZWRpdC8zIiB0YXJnZXQ9 Il9ibGFuayI+PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPkVkaXQ8L3NwYW4+PC9hPgogIHw8YSBo cmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9kZWxldGUvMyIgdGFyZ2V0PSJfYmxhbmsi PjxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj4KICBEZWxldGU8L3NwYW4+PC9hPjwvc3Bhbj48L3A+ CiAgPC90ZD4KIDwvdHI+CiA8dHI+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVwdCI+CiAgPHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7bGluZS1oZWln aHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij40PC9zcGFuPjwvcD4KICA8 L3RkPgogIDx0ZCBzdHlsZT0icGFkZGluZzowLjc1cHQiPgogIDxwIGNsYXNzPSJNc29Ob3JtYWwi IHN0eWxlPSJtYXJnaW4tYm90dG9tOjAuMDAwMXB0O2xpbmUtaGVpZ2h0Om5vcm1hbCI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMnB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZx dW90OywmcXVvdDtzZXJpZiZxdW90OyI+UmF2aSBNYW5kYXlhbTwvc3Bhbj48L3A+CiAgPC90ZD4K ICA8dGQgc3R5bGU9InBhZGRpbmc6MC43NXB0Ij4KICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWJvdHRvbTowLjAwMDFwdDtsaW5lLWhlaWdodDpub3JtYWwiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTJwdDtmb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDss JnF1b3Q7c2VyaWYmcXVvdDsiPm1hbGU8L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJw YWRkaW5nOjAuNzVwdCI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0 b206MC4wMDAxcHQ7bGluZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEy cHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1 b3Q7Ij5hY3RpdmU8L3NwYW4+PC9wPgogIDwvdGQ+CiAgPHRkIHN0eWxlPSJwYWRkaW5nOjAuNzVw dCI+CiAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1ib3R0b206MC4wMDAxcHQ7 bGluZS1oZWlnaHQ6bm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEycHQ7Zm9udC1mYW1p bHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij48YSBocmVm PSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9lZGl0LzQiIHRhcmdldD0iX2JsYW5rIj48c3Bh biBzdHlsZT0iY29sb3I6Ymx1ZSI+RWRpdDwvc3Bhbj48L2E+CiAgfDxhIGhyZWY9Imh0dHA6Ly9s b2NhbGhvc3QvZnIvZG9jdG9yL2RlbGV0ZS80IiB0YXJnZXQ9Il9ibGFuayI+PHNwYW4gc3R5bGU9 ImNvbG9yOmJsdWUiPgogIERlbGV0ZTwvc3Bhbj48L2E+PC9zcGFuPjwvcD4KICA8L3RkPgogPC90 cj4KPC90Ym9keT48L3RhYmxlPgoKPGJyPndoZW4gaSBjbGljayBkZWxldGUgYnV0dG9uIGkgc2hv dWxkIGdldCBwb3AtdXAgd2luZG93IHdpdGggdGhlIGRpYWxvZ3VlIGxpa2UgdGhpczs8YnI+PGJy PjxoMj5BcmUgWW91IFN1cmUgWW91IFdhbnQgVG8gRGVsZXRlIFRoaXMgRG9jdG9yPzwvaDI+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApUaGlzIGFjdGlvbiBjYW5ub3Qg YmUgdW5kb25lLjxpbnB1dCBuYW1lPSJjb25maXJtIiB2YWx1ZT0iMSIgdHlwZT0iaGlkZGVuIj4K PGRpdj48aW5wdXQgbmFtZT0ib3AiIHZhbHVlPSJEZWxldGUiIHR5cGU9InN1Ym1pdCI+CjxhIGhy ZWY9Imh0dHA6Ly9sb2NhbGhvc3QvZnIvZG9jdG9yIiB0YXJnZXQ9Il9ibGFuayI+Q2FuY2VsPC9h Pjxicj48YnI+V2hlbiBJIGNsaWNrIGVkaXQgYnV0dG9uIEkgc2hvdWxkIGdldCBteSBlZGl0IGZv cm0sPGJyPjxzcGFuPjxkaXY+PC9kaXY+PC9zcGFuPgkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAo8ZGl2PgogPGxhYmVsPkZpcnN0IE5hbWU6IDwvbGFiZWw+CiA8aW5w dXQgbWF4bGVuZ3RoPSIxMjgiIG5hbWU9ImZpcnN0bmFtZSIgc2l6ZT0iNjAiIHZhbHVlPSJqYXlh cmFtIiB0eXBlPSJ0ZXh0Ij4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+TGFzdCBOYW1lOiA8L2xhYmVs PgogPGlucHV0IG1heGxlbmd0aD0iMTI4IiBuYW1lPSJsYXN0bmFtZSIgc2l6ZT0iNjAiIHZhbHVl PSJzcmluaXZhc2FuIiB0eXBlPSJ0ZXh0Ij4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+R2VuZGVyOiA8 L2xhYmVsPgogPGRpdj48ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJnZW5kZXIiIHZhbHVlPSIw IiBjaGVja2VkIHR5cGU9InJhZGlvIj4gbWFsZTwvbGFiZWw+CjwvZGl2Pgo8ZGl2PgogPGxhYmVs PjxpbnB1dCBuYW1lPSJnZW5kZXIiIHZhbHVlPSIxIiB0eXBlPSJyYWRpbyI+IGZlbWFsZTwvbGFi ZWw+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjxkaXY+CiA8bGFiZWw+U3RhdHVzOiA8L2xhYmVsPgog PGRpdj48ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJzdGF0dXMiIHZhbHVlPSIwIiB0eXBlPSJy YWRpbyI+IGFjdGl2ZTwvbGFiZWw+CjwvZGl2Pgo8ZGl2PgogPGxhYmVsPjxpbnB1dCBuYW1lPSJz dGF0dXMiIHZhbHVlPSIxIiBjaGVja2VkIHR5cGU9InJhZGlvIj4gaW5hY3RpdmU8L2xhYmVsPgo8 L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8aW5wdXQgbmFtZT0iY29uZmlybSIgdmFsdWU9IjEiIHR5cGU9 ImhpZGRlbiI+CjxkaXY+PGlucHV0IG5hbWU9Im9wIiB2YWx1ZT0iU2F2ZSIgdHlwZT0ic3VibWl0 Ij4KPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IiIHRhcmdldD0iX2JsYW5rIj5D YW5jZWw8L2E+PC9kaXY+oDxicj5jb21wbGV0ZSBjb2RlIG9mIG15IG1vZHVsZSBmaWxlIGlzIGFz IGZvbGxvd3M6PGJyPjxicj48aSBzdHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxzYW5zLXNlcmlm Ij48Yj4mbHQ7P3BocDxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX21lbnUoKSB7PGJyPqAgJGl0ZW1z ID0gYXJyYXkoKTs8YnI+CgoKCgqgPGJyPqAgJGl0ZW1zWyYjMzk7ZG9jdG9yJiMzOTtdID0gYXJy YXkoPGJyPqCgoCAmIzM5O3RpdGxlJiMzOTsgPSZndDsgdCgmIzM5O0RvY3RvcnMmIzM5OyksPGJy PqCgoCAmIzM5O3BhZ2UgY2FsbGJhY2smIzM5OyA9Jmd0OyYjMzk7ZG9jdG9yc19saXN0JiMzOTss PGJyPqCgoCAmIzM5O2FjY2VzcyBhcmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2FjY2Vz cyBkb2N0b3ImIzM5OyksPGJyPgoKCgoKoKCgICYjMzk7dHlwZSYjMzk7ID0mZ3Q7IE1FTlVfTk9S TUFMX0lURU0sPGJyPqAgKTs8YnI+oDxicj6gICRpdGVtc1smIzM5O2RvY3Rvci9kZWxldGUvJWRv Y3Rvcl91c2VyJiMzOTtdID0gYXJyYXkoPGJyPqCgoCAmIzM5O3RpdGxlJiMzOTsgPSZndDsgdCgm IzM5O0RlbGV0ZSBkb2N0b3ImIzM5OyksPGJyPqCgoCAmIzM5O3BhZ2UgY2FsbGJhY2smIzM5OyA9 Jmd0OyAmIzM5O2RydXBhbF9nZXRfZm9ybSYjMzk7LDxicj4KCgoKCqCgoCAmIzM5O3BhZ2UgYXJn dW1lbnRzJiMzOTsgPSZndDsgYXJyYXkoJiMzOTtkb2N0b3JfZGVsZXRlX2NvbmZpcm0mIzM5Oywg MiksPGJyPqCgoCAmIzM5O2FjY2VzcyBhcmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2Fj Y2VzcyBkb2N0b3ImIzM5OyksPGJyPqCgoCAmIzM5O3R5cGUmIzM5OyA9Jmd0OyBNRU5VX0NBTExC QUNLLDxicj6gICk7PGJyPqAkaXRlbXNbJiMzOTtkb2N0b3IvZWRpdC8lZG9jdG9yX3VzZXImIzM5 O10gPSBhcnJheSg8YnI+CgoKCgqgoKAgJiMzOTt0aXRsZSYjMzk7ID0mZ3Q7IHQoJiMzOTtFZGl0 IEZvcm0mIzM5OyksPGJyPqCgoCAmIzM5O3BhZ2UgY2FsbGJhY2smIzM5OyA9Jmd0OyAmIzM5O2Ry dXBhbF9nZXRfZm9ybSYjMzk7LDxicj4mIzM5O3BhZ2UgYXJndW1lbnRzJiMzOTsgPSZndDsgYXJy YXkoJiMzOTtkb2N0b3JfZWRpdF9jb25maXJtJiMzOTssIDIpLDxicj6goCAmIzM5O2FjY2VzcyBh cmd1bWVudHMmIzM5OyA9Jmd0OyBhcnJheSgmIzM5O2FjY2VzcyBkb2N0b3ImIzM5OyksPGJyPgoK CgoKoKCgICYjMzk7dHlwZSYjMzk7ID0mZ3Q7IE1FTlVfTk9STUFMX0lURU0sPGJyPqAgKTs8YnI+ oCByZXR1cm4gJGl0ZW1zOzxicj59PGJyPjxicj5mdW5jdGlvbiBkb2N0b3JzX2xpc3QoKSB7PGJy PqCgoCAkaGVhZGVyID0gYXJyYXkodChTbC5ObyksdCgmIzM5O0RvY3RvciBOYW1lJiMzOTspLCB0 KCYjMzk7R2VuZGVyJiMzOTspLKAgdCgmIzM5O1N0YXR1cyYjMzk7KSwgdCgmIzM5O0FjdGlvbiYj Mzk7KSk7PGJyPgoKCgoKoDxicj6goKAgJHF1ZXJ5ID0gJnF1b3Q7U0VMRUNUICogRlJPTSB7ZG9j dG9yfSZxdW90Ozs8YnI+oKCgICRycyA9IGRiX3F1ZXJ5KCRxdWVyeSk7PGJyPqA8YnI+oKCgICRy b3cgPSBhcnJheSgpOzxicj6gPGJyPqCgoCBpZiAoJHJzKSB7PGJyPqCgoCCgoKAgd2hpbGUgKCRk YXRhID0gZGJfZmV0Y2hfb2JqZWN0KCRycykpIHs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJGRvY3RvcmlkID0gJGRhdGEtJmd0O2RvY3Rv cmlkOzxicj4KCgoKCqCgoCCgoKAgoKCgICRnZW5kZXIgPSAkZGF0YS0mZ3Q7Z2VuZGVyOzxicj6g oKAgoKCgIKCgoCAkc3RhdHVzID0gJGRhdGEtJmd0O3N0YXR1cyA7PGJyPqCgoCCgoKAgoKCgICRy b3dbXSA9IGFycmF5KCRkb2N0b3JpZCxzdHJpcHNsYXNoZXModWN3b3JkcygkZGF0YS0mZ3Q7Zmly c3RuYW1lKSkgLiAmIzM5OyAmIzM5OyAuIHN0cmlwc2xhc2hlcyh1Y3dvcmRzKCRkYXRhLSZndDts YXN0bmFtZSkpLCAkZ2VuZGVyLCAkc3RhdHVzLCA8YnI+CgoKCgqgoKAgoKCgIKCgoCAmcXVvdDsm bHQ7YSBocmVmPSYjMzk7ZG9jdG9yL2VkaXQveyRkYXRhLSZndDtkb2N0b3JpZH0mIzM5OyZndDsm cXVvdDsgLiB0KCYjMzk7RWRpdCYjMzk7KSAuoCAmcXVvdDsmbHQ7L2EmZ3Q7IHwmbHQ7YSBocmVm PSYjMzk7ZG9jdG9yL2RlbGV0ZS97JGRhdGEtJmd0O2RvY3RvcmlkfSYjMzk7Jmd0OyAmcXVvdDsu IHQoJiMzOTtEZWxldGUmIzM5OykuJnF1b3Q7Jmx0Oy9hJmd0OyZxdW90OyApOzxicj4KCgoKCqCg oCCgoKAgfTxicj6goKAgfTxicj6gPGJyPqCgoCAkc3RyIC49IHRoZW1lX3RhYmxlKCRoZWFkZXIs ICRyb3cpOzxicj6gPGJyPqCgoCByZXR1cm4gJHN0cjs8YnI+fTxicj5mdW5jdGlvbiBkb2N0b3Jf dXNlcl9sb2FkKCRkb2N0b3JpZCkgezxicj6goKAgJHF1ZXJ5ID0gJnF1b3Q7U0VMRUNUICogRlJP TSB7ZG9jdG9yfSBXSEVSRSBkb2N0b3JpZCA9ICVkJnF1b3Q7Ozxicj6goKAgJHJzID0gZGJfcXVl cnkoJHF1ZXJ5LCAkZG9jdG9yaWQpOzxicj4KCgoKCqA8YnI+oKCgIGlmICgkcnMpIHs8YnI+oKCg IKCgoCB3aGlsZSAoJGRhdGEgPSBkYl9mZXRjaF9vYmplY3QoJHJzKSkgezxicj6goKAgoKCgIKCg oCByZXR1cm4gJGRhdGE7PGJyPqCgoCCgoKAgfTxicj6goKAgfTxicj6gPGJyPqCgoCByZXR1cm4g RkFMU0U7PGJyPn08YnI+PGJyPmZ1bmN0aW9uIHBvcHVwKCk8YnI+ezxicj53aW5kb3cuY29uZmly bSgpOzxicj5yZXR1cm4gZmFsc2U7PGJyPgoKCgoKfTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX2Rl bGV0ZV9jb25maXJtKCZhbXA7JGZvcm1fc3RhdGUsICRkb2N0b3IpIHs8YnI+oKCgICRmb3JtWyYj Mzk7X2RvY3RvciYjMzk7XSA9IGFycmF5KDxicj6goKAgoKCgICYjMzk7I3R5cGUmIzM5OyA9Jmd0 OyAmIzM5O3ZhbHVlJiMzOTssPGJyPqCgoCCgoKAgJiMzOTsjdmFsdWUmIzM5OyA9Jmd0OyAkZG9j dG9yLDxicj6goKAgKTs8YnI+oDxicj4KCgoKCqCgoCByZXR1cm4gY29uZmlybV9mb3JtKCRmb3Jt LDxicj6goKAgoKCgIHQoJiMzOTtBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMg ZG9jdG9yPyYjMzk7KSw8YnI+oKCgIKCgoCBpc3NldCgkX0dFVFsmIzM5O2Rlc3RpbmF0aW9uJiMz OTtdKSA/ICRfR0VUWyYjMzk7ZGVzdGluYXRpb24mIzM5O10gOiAmcXVvdDtkb2N0b3ImcXVvdDss PGJyPqCgoCCgoKAgdCgmIzM5O1RoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuJiMzOTspLDxi cj4KCgoKCqCgoCCgoKAgdCgmIzM5O0RlbGV0ZSYjMzk7KSw8YnI+oKCgIKCgoCB0KCYjMzk7Q2Fu Y2VsJiMzOTspKTs8YnI+fTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX2RlbGV0ZV9jb25maXJtX3N1 Ym1pdCgkZm9ybSwgJmFtcDskZm9ybV9zdGF0ZSkgezxicj6goKAgJGZvcm1fdmFsdWVzID0gJGZv cm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5O107PGJyPqA8YnI+oKCgIGlmICgkZm9ybV9zdGF0ZVsm IzM5O3ZhbHVlcyYjMzk7XVsmIzM5O2NvbmZpcm0mIzM5O10pIHs8YnI+CgoKCgqgoKAgoKCgICRk b2N0b3IgPSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsmIzM5O19kb2N0b3ImIzM5O107 PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgPGJyPqCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAkcXVlcnkgPSAmcXVvdDtERUxFVEWgIEZST00ge2Rv Y3Rvcn0gd2hlcmUgZG9jdG9yaWQ9ICRkb2N0b3ItJmd0O2RvY3RvcmlkJnF1b3Q7Ozxicj4KCgoK CqCgoCCgoKCgoKCgoKCgoKCgoKCgoKAgJHJzID0gZGJfcXVlcnkoJHF1ZXJ5KTs8YnI+ZHJ1cGFs X3NldF9tZXNzYWdlKHQoJiMzOTtEb2N0b3IgaGFzIGJlZW4gZGVsZXRlZCBzdWNjZXNzZnVsbHku JiMzOTspKTs8YnI+oCCgoKAgfaAgZHJ1cGFsX2dvdG8oJnF1b3Q7ZG9jdG9yJnF1b3Q7KTs8YnI+ fTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX2VkaXRfY29uZmlybSgmYW1wOyRmb3JtX3N0YXRlLCRk b2N0b3Ipezxicj4KCgoKCqAkZm9ybSA9IGFycmF5KCk7PGJyPiRmb3JtWyYjMzk7X2RvY3RvcnMm IzM5O10gPSBhcnJheSg8YnI+oKCgIKCgoCAmIzM5OyN0eXBlJiMzOTsgPSZndDsgJiMzOTt2YWx1 ZSYjMzk7LDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMzOTsjdmFs dWUmIzM5OyA9Jmd0OyAkZG9jdG9yLDxicj6goKAgoKCgICk7PGJyPjxicj4kcXVlcnkgPSAmcXVv dDtTRUxFQ1QgKiBGUk9NIHtkb2N0b3J9IHdoZXJlIGRvY3RvcmlkPSVkJnF1b3Q7Ozxicj4KCgoK CqCgoCAkcnMgPSBkYl9xdWVyeSgkcXVlcnksJGRvY3Rvci0mZ3Q7ZG9jdG9yaWQpOzxicj4kZGF0 YT1kYl9mZXRjaF9vYmplY3QoJHJzKTs8YnI+JGZpcnN0bmFtZT0kZGF0YS0mZ3Q7Zmlyc3RuYW1l Ozxicj4kbGFzdG5hbWU9JGRhdGEtJmd0O2xhc3RuYW1lOzxicj4kZ2VuZGVyMSA9ICRkYXRhLSZn dDtnZW5kZXI7PGJyPiRnZW5kZXIgPSAkZ2VuZGVyMSA/IDA6IDE7PGJyPiRzdGF0dXMxID0gJGRh dGEtJmd0O3N0YXR1cyA7PGJyPgoKCgoKJHN0YXR1cyA9ICRzdGF0dXMxID8gMTogMDs8YnI+JGZv cm1bJiMzOTtmaXJzdG5hbWUmIzM5O109YXJyYXkoPGJyPqCgoCCgoKAgJiMzOTsjdGl0bGUmIzM5 Oz0mZ3Q7dCgmIzM5O0ZpcnN0IE5hbWUmIzM5OyksPGJyPqCgoCCgoKAgJiMzOTsjdHlwZSYjMzk7 PSZndDsmIzM5O3RleHRmaWVsZCYjMzk7LDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgICYjMzk7I2RlZmF1bHRfdmFsdWUmIzM5Oz0mZ3Q7JGRhdGEtJmd0O2ZpcnN0bmFtZSw8 YnI+CgoKCgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCA8YnI+oCApOzxicj4k Zm9ybVsmIzM5O2xhc3RuYW1lJiMzOTtdPWFycmF5KDxicj6goKAgoKCgICYjMzk7I3RpdGxlJiMz OTs9Jmd0O3QoJiMzOTtMYXN0IE5hbWUmIzM5OyksPGJyPqCgoCCgoKAgJiMzOTsjdHlwZSYjMzk7 PSZndDsmIzM5O3RleHRmaWVsZCYjMzk7LDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgJiMzOTsjZGVmYXVsdF92YWx1ZSYjMzk7ID0mZ3Q7ICRsYXN0bmFtZSw8YnI+CgoK CgqgoKAgKTs8YnI+JGZvcm1bJiMzOTtnZW5kZXImIzM5O109YXJyYXkoPGJyPqCgoCCgoKAgJiMz OTsjdGl0bGUmIzM5Oz0mZ3Q7dCgmIzM5O0dlbmRlciYjMzk7KSw8YnI+oKCgIKCgoCAmIzM5OyN0 eXBlJiMzOTs9Jmd0OyYjMzk7cmFkaW9zJiMzOTssPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgPGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMzOTsj b3B0aW9ucyYjMzk7ID0mZ3Q7IGFycmF5KHQoJiMzOTttYWxlJiMzOTspLCB0KCYjMzk7ZmVtYWxl JiMzOTspKSw8YnI+CgoKCgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgJiMz OTsjZGVmYXVsdF92YWx1ZSYjMzk7ID0mZ3Q7IHZhcmlhYmxlX2dldCgmIzM5O2dlbmRlciYjMzk7 LCRnZW5kZXIpLDxicj6goKAgKTs8YnI+JGZvcm1bJiMzOTtzdGF0dXMmIzM5O109YXJyYXkoPGJy PqCgoCCgoKAgJiMzOTsjdGl0bGUmIzM5Oz0mZ3Q7dCgmIzM5O1N0YXR1cyYjMzk7KSw8YnI+oKCg IKCgoCAmIzM5OyN0eXBlJiMzOTs9Jmd0OyYjMzk7cmFkaW9zJiMzOTssPGJyPgoKCgoKoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICYjMzk7I29wdGlvbnMmIzM5OyA9Jmd0OyBhcnJheSh0 KCYjMzk7YWN0aXZlJiMzOTspLCB0KCYjMzk7aW5hY3RpdmUmIzM5OykpLDxicj6goKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgICYjMzk7I2RlZmF1bHRfdmFsdWUmIzM5OyA9Jmd0OyB2YXJp YWJsZV9nZXQoJiMzOTtzdGF0dXMmIzM5Oywkc3RhdHVzKSw8YnI+oKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoCA8YnI+CgoKCgqgoKAgKTs8YnI+oKCgIDxicj5yZXR1cm4gY29u ZmlybV9mb3JtKCRmb3JtLHQoJiMzOTsmIzM5OyksPGJyPqCgoCCgoKAgaXNzZXQoJF9HRVRbJiMz OTtkZXN0aW5hdGlvbiYjMzk7XSkgPyAkX0dFVFsmIzM5O2Rlc3RpbmF0aW9uJiMzOTtdIDogJnF1 b3Q7ZG9jdG9yJnF1b3Q7LDxicj6goKAgoKCgIHQoJiMzOTsmIzM5OyksPGJyPqCgoCCgoKAgdCgm IzM5O1NhdmUmIzM5OyksPGJyPqCgoCCgoKAgdCgmIzM5O0NhbmNlbCYjMzk7KSk7PGJyPgoKCgoK fTxicj48YnI+ZnVuY3Rpb24gZG9jdG9yX2VkaXRfY29uZmlybV9zdWJtaXQoJGZvcm0sICZhbXA7 JGZvcm1fc3RhdGUpPGJyPns8YnI+aWYgKCRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYj Mzk7Y29uZmlybSYjMzk7XSkgezxicj4kZG9jdG9yID0gJGZvcm1fc3RhdGVbJiMzOTt2YWx1ZXMm IzM5O11bJiMzOTtfZG9jdG9ycyYjMzk7XTs8YnI+JGZvcm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5 O11bJiMzOTtkb2N0b3JpZCYjMzk7XSA9ICRkb2N0b3ItJmd0O2RvY3RvcmlkOzxicj4KCgoKCqAk Zmlyc3RuYW1lID0gJGZvcm1fc3RhdGVbJiMzOTt2YWx1ZXMmIzM5O11bJiMzOTtmaXJzdG5hbWUm IzM5O107PGJyPqCgoCAkbGFzdG5hbWUgPSAkZm9ybV9zdGF0ZVsmIzM5O3ZhbHVlcyYjMzk7XVsm IzM5O2xhc3RuYW1lJiMzOTtdOzxicj6goKAgJGdlbmRlcjE9ICRmb3JtX3N0YXRlWyYjMzk7dmFs dWVzJiMzOTtdWyYjMzk7Z2VuZGVyJiMzOTtdOzxicj4kZ2VuZGVyID2gICRnZW5kZXIxID8gdCgm IzM5O2ZlbWFsZSYjMzk7KSA6IHQoJiMzOTttYWxlJiMzOTspOzxicj4KCgoKCqCgoCAkc3RhdHVz MSA9ICRmb3JtX3N0YXRlWyYjMzk7dmFsdWVzJiMzOTtdWyYjMzk7c3RhdHVzJiMzOTtdOzxicj4k c3RhdHVzID0gJHN0YXR1czEgPyB0KCYjMzk7aW5hY3RpdmUmIzM5OykgOiB0KCYjMzk7YWN0aXZl JiMzOTspOzxicj4kcXVlcnkgPSAmcXVvdDtVUERBVEWgIHtkb2N0b3J9IFNFVCBmaXJzdG5hbWUg PSAmIzM5OyRmaXJzdG5hbWUmIzM5OywgbGFzdG5hbWU9ICYjMzk7JGxhc3RuYW1lJiMzOTssoCBn ZW5kZXIgPSAmIzM5OyRnZW5kZXImIzM5Oywgc3RhdHVzID0gJiMzOTskc3RhdHVzJiMzOTugIFdI RVJFoCBkb2N0b3JpZD0lZCZxdW90Ozs8YnI+CgoKCgqgJHJzID0gZGJfcXVlcnkoJHF1ZXJ5LCRk b2N0b3ItJmd0O2RvY3RvcmlkKTsgfTxicj5kcnVwYWxfZ290bygmcXVvdDtkb2N0b3ImcXVvdDsp Ozxicj59PGJyPjxicj48L2I+PC9pPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTp2ZXJkYW5hLHNh bnMtc2VyaWYiPkFueSBoZWxwIGFwcHJlY2lhdGVkLjwvc3Bhbj48aSBzdHlsZT0iZm9udC1mYW1p bHk6dmVyZGFuYSxzYW5zLXNlcmlmIj48Yj48YnI+CgoKCgo8YnI+PC9iPjwvaT48L2Rpdj48aSBz dHlsZT0iZm9udC1mYW1pbHk6dmVyZGFuYSxzYW5zLXNlcmlmIj48Yj5SZWdhcmRzLDwvYj48L2k+ PGJyPjxmb250IGNvbG9yPSIjODg4ODg4Ij5NYWhlc2ggR2FqYWJhcjxicj4KPC9mb250PjwvZGl2 Pjxicj4KPC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2Pjxicj4KPC9kaXY+PC9kaXY+PC9i bG9ja3F1b3RlPjwvZGl2Pjxicj48YnIgY2xlYXI9ImFsbCI+PGJyPi0tIDxicj48Zm9udCBzaXpl PSIyIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWYiPkNoZWVycyw8 L3NwYW4+PGJyIHN0eWxlPSJmb250LWZhbWlseTp0YWhvbWEsc2Fucy1zZXJpZiI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OnRhaG9tYSxzYW5zLXNlcmlmIj5BbWl0IFZ5YXM8L3NwYW4+PC9mb250 PjxiciBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWYiPgoKPHNwYW4gc3R5bGU9 ImZvbnQtZmFtaWx5OnRhaG9tYSxzYW5zLXNlcmlmO2NvbG9yOnJnYigxMDIsIDEwMiwgMTAyKSI+ X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX188L3NwYW4+PGJyIHN0eWxlPSJmb250LWZhbWlseTp0YWhvbWEsc2Fucy1zZXJp ZiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OnRhaG9tYSxzYW5zLXNlcmlmO2NvbG9yOnJnYig1 MSwgNTEsIDUxKSI+RW1haWygIDogPC9zcGFuPjxhIHN0eWxlPSJmb250LWZhbWlseTp0YWhvbWEs c2Fucy1zZXJpZjtjb2xvcjpyZ2IoNTEsIDUxLCA1MSkiIGhyZWY9Im1haWx0bzphbWl0LnZ5YXNA Ymxpc3N0ZXJpbmcuY29tIiB0YXJnZXQ9Il9ibGFuayI+YW1pdC52eWFzQGJsaXNzdGVyaW5nLmNv bTwvYT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWY7Y29sb3I6cmdi KDUxLCA1MSwgNTEpIj6goKCgoKCgoKCgoKCgoCBTa3lwZSA6IHZ5YXNhbWl0MjAwNDwvc3Bhbj48 YnIgc3R5bGU9ImZvbnQtZmFtaWx5OnRhaG9tYSxzYW5zLXNlcmlmO2NvbG9yOnJnYig1MSwgNTEs IDUxKSI+Cgo8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6dGFob21hLHNhbnMtc2VyaWY7Y29sb3I6 cmdiKDUxLCA1MSwgNTEpIj5Nb2JpbGUgOiArOTEgOTkzLTA0MC0xNDkwoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoCBQaG9uZSA6ICs5MS0wMjIgNDI4LTg4NC0wNyAgIDwvc3Bhbj48YnI+Cg== --===============2398304263108711851==-- From nan_wich@bellsouth.net Wed Jan 12 15:17:17 2011 From: nan wich To: development@drupal.org Subject: Re: [development] creating pop-up window for delete and edit actions in table in module file Date: Wed, 12 Jan 2011 07:17:14 -0800 Message-ID: <602297.60365.qm@web180305.mail.gq1.yahoo.com> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8835139885367151080==" --===============8835139885367151080== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Well, I will be the lone wolf here I guess. The "standard Drupal" way is to u= se=20 the delete_confirm dialog API, which you can find documented=20 in=C2=A0http://api.drupal.org. Have you even tried a search on drupal.org? I am certain that you would find = your answers there. =C2=A0 Nancy Injustice anywhere is a threat to justice everywhere. -- Dr. Martin L. King, = Jr. ________________________________ From: mahesh gajabar To: development@drupal.org Sent: Wed, January 12, 2011 1:37:59 AM Subject: [development] creating pop-up window for delete and edit actions in = table in module file Hi, I have written a custome module table for showing some information which is=20 fetched from database and every row is having edit and delete actions. Both a= re=20 working fine. But whenever I click on on edit or delete action action it open= s=20 in other window leaving current page. I want these actions to be taken place = in=20 pop-up window.=20 My table on drupal screen is as follows SlNo Doctor Name Gender Status Action=20 2 Jayaram Srinivasan male inactive Edit |Delete=20 3 Pavithra M female active Edit |Delete=20 4 Ravi Mandayam male active Edit |Delete=20 when i click delete button i should get pop-up window with the dialogue like = this; Are You Sure You Want To Delete This Doctor?This action cannot be undone.=20 Cancel When I click edit button I should get my edit form, First Name: =20 Last Name: =20 Gender:=20 male=20 female=20 Status:=20 active=20 inactive =20 Cancel=C2=A0 complete code of my module file is as follows: t('Doctors'), =C2=A0=C2=A0=C2=A0 'page callback' =3D>'doctors_list', =C2=A0=C2=A0=C2=A0 'access arguments' =3D> array('access doctor'), =C2=A0=C2=A0=C2=A0 'type' =3D> MENU_NORMAL_ITEM, =C2=A0 ); =C2=A0 =C2=A0 $items['doctor/delete/%doctor_user'] =3D array( =C2=A0=C2=A0=C2=A0 'title' =3D> t('Delete doctor'), =C2=A0=C2=A0=C2=A0 'page callback' =3D> 'drupal_get_form', =C2=A0=C2=A0=C2=A0 'page arguments' =3D> array('doctor_delete_confirm', 2), =C2=A0=C2=A0=C2=A0 'access arguments' =3D> array('access doctor'), =C2=A0=C2=A0=C2=A0 'type' =3D> MENU_CALLBACK, =C2=A0 ); =C2=A0$items['doctor/edit/%doctor_user'] =3D array( =C2=A0=C2=A0=C2=A0 'title' =3D> t('Edit Form'), =C2=A0=C2=A0=C2=A0 'page callback' =3D> 'drupal_get_form', 'page arguments' =3D> array('doctor_edit_confirm', 2), =C2=A0=C2=A0 'access arguments' =3D> array('access doctor'), =C2=A0=C2=A0=C2=A0 'type' =3D> MENU_NORMAL_ITEM, =C2=A0 ); =C2=A0 return $items; } function doctors_list() { =C2=A0=C2=A0=C2=A0 $header =3D array(t(Sl.No),t('Doctor Name'), t('Gender'),= =C2=A0 t('Status'),=20 t('Action')); =C2=A0 =C2=A0=C2=A0=C2=A0 $query =3D "SELECT * FROM {doctor}"; =C2=A0=C2=A0=C2=A0 $rs =3D db_query($query); =C2=A0 =C2=A0=C2=A0=C2=A0 $row =3D array(); =C2=A0 =C2=A0=C2=A0=C2=A0 if ($rs) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 while ($data =3D db_fetch_object($rs)) { =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 $doctorid =3D=20 $data->doctorid; =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 $gender =3D $data->g= ender; =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 $status =3D $data->s= tatus ; =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 $row[] =3D array($do= ctorid,stripslashes(ucwords($data->firstname)) . '=20 ' . stripslashes(ucwords($data->lastname)), $gender, $status,=20 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 "doctorid}'>" . t('Edit') .=C2=A0 " |doctorid}'> ". t('Delete')."" ); =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0 } =C2=A0 =C2=A0=C2=A0=C2=A0 $str .=3D theme_table($header, $row); =C2=A0 =C2=A0=C2=A0=C2=A0 return $str; } function doctor_user_load($doctorid) { =C2=A0=C2=A0=C2=A0 $query =3D "SELECT * FROM {doctor} WHERE doctorid =3D %d"; =C2=A0=C2=A0=C2=A0 $rs =3D db_query($query, $doctorid); =C2=A0 =C2=A0=C2=A0=C2=A0 if ($rs) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 while ($data =3D db_fetch_object($rs)) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return $data; =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } =C2=A0=C2=A0=C2=A0 } =C2=A0 =C2=A0=C2=A0=C2=A0 return FALSE; } function popup() { window.confirm(); return false; } function doctor_delete_confirm(&$form_state, $doctor) { =C2=A0=C2=A0=C2=A0 $form['_doctor'] =3D array( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type' =3D> 'value', =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#value' =3D> $doctor, =C2=A0=C2=A0=C2=A0 ); =C2=A0 =C2=A0=C2=A0=C2=A0 return confirm_form($form, =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('Are you sure you want to delete this= doctor?'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 isset($_GET['destination']) ? $_GET['de= stination'] : "doctor", =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('This action cannot be undone.'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('Delete'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('Cancel')); } function doctor_delete_confirm_submit($form, &$form_state) { =C2=A0=C2=A0=C2=A0 $form_values =3D $form_state['values']; =C2=A0 =C2=A0=C2=A0=C2=A0 if ($form_state['values']['confirm']) { =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 $doctor =3D $form_state['values']['_doc= tor']; =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $query =3D= "DELETE=C2=A0 FROM {doctor} where=20 doctorid=3D $doctor->doctorid"; =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $rs =3D db_query($query); drupal_set_message(t('Doctor has been deleted successfully.')); =C2=A0 =C2=A0=C2=A0=C2=A0 }=C2=A0 drupal_goto("doctor"); } function doctor_edit_confirm(&$form_state,$doctor){ =C2=A0$form =3D array(); $form['_doctors'] =3D array( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type' =3D> 'value', =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#value' = =3D> $doctor, =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 ); $query =3D "SELECT * FROM {doctor} where doctorid=3D%d"; =C2=A0=C2=A0=C2=A0 $rs =3D db_query($query,$doctor->doctorid); $data=3Ddb_fetch_object($rs); $firstname=3D$data->firstname; $lastname=3D$data->lastname; $gender1 =3D $data->gender; $gender =3D $gender1 ? 0: 1; $status1 =3D $data->status ; $status =3D $status1 ? 1: 0; $form['firstname']=3Darray( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#title'=3D>t('First Name'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type'=3D>'textfield', =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#default_value'=3D>$d= ata->firstname, =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 =C2=A0 ); $form['lastname']=3Darray( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#title'=3D>t('Last Name'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type'=3D>'textfield', =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#default_= value' =3D> $lastname, =C2=A0=C2=A0=C2=A0 ); $form['gender']=3Darray( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#title'=3D>t('Gender'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type'=3D>'radios', =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#options' =3D> array(= t('male'), t('female')), =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#default_= value' =3D>=20 variable_get('gender',$gender), =C2=A0=C2=A0=C2=A0 ); $form['status']=3Darray( =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#title'=3D>t('Status'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 '#type'=3D>'radios', =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#options' =3D> array(t('active'), t('inactive= ')), =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '#default_value' =3D>=20 variable_get('status',$status), =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20 =C2=A0=C2=A0=C2=A0 ); =C2=A0=C2=A0=C2=A0=20 return confirm_form($form,t(''), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 isset($_GET['destination']) ? $_GET['de= stination'] : "doctor", =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t(''), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('Save'), =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 t('Cancel')); } function doctor_edit_confirm_submit($form, &$form_state) { if ($form_state['values']['confirm']) { $doctor =3D $form_state['values']['_doctors']; $form_state['values']['doctorid'] =3D $doctor->doctorid; =C2=A0$firstname =3D $form_state['values']['firstname']; =C2=A0=C2=A0=C2=A0 $lastname =3D $form_state['values']['lastname']; =C2=A0=C2=A0=C2=A0 $gender1=3D $form_state['values']['gender']; $gender =3D=C2=A0 $gender1 ? t('female') : t('male'); =C2=A0=C2=A0=C2=A0 $status1 =3D $form_state['values']['status']; $status =3D $status1 ? t('inactive') : t('active'); $query =3D "UPDATE=C2=A0 {doctor} SET firstname =3D '$firstname', lastname=3D= '$lastname',=C2=A0=20 gender =3D '$gender', status =3D '$status'=C2=A0 WHERE=C2=A0 doctorid=3D%d"; =C2=A0$rs =3D db_query($query,$doctor->doctorid); } drupal_goto("doctor"); } Any help appreciated. Regards, Mahesh Gajabar --===============8835139885367151080== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IS0tIERJViB7bWFyZ2luOjBweDt9 IC0tPjwvc3R5bGU+PC9oZWFkPjxib2R5PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLCBo ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHQiPjxESVY+PC9ESVY+CjxESVY+V2Vs bCwgSSB3aWxsIGJlIHRoZSBsb25lIHdvbGYgaGVyZSBJIGd1ZXNzLiBUaGUgInN0YW5kYXJkIERy dXBhbCIgd2F5IGlzIHRvIHVzZSB0aGUgZGVsZXRlX2NvbmZpcm0gZGlhbG9nIEFQSSwgd2hpY2gg eW91IGNhbiBmaW5kIGRvY3VtZW50ZWQgaW4mbmJzcDs8QSBocmVmPSJodHRwOi8vYXBpLmRydXBh bC5vcmciPmh0dHA6Ly9hcGkuZHJ1cGFsLm9yZzwvQT4uPC9ESVY+CjxESVY+Jm5ic3A7PC9ESVY+ CjxESVY+SGF2ZSB5b3UgZXZlbiB0cmllZCBhIHNlYXJjaCBvbiBkcnVwYWwub3JnPyBJIGFtIGNl cnRhaW4gdGhhdCB5b3Ugd291bGQgZmluZCB5b3VyIGFuc3dlcnMgdGhlcmUuPEJSPiZuYnNwOzwv RElWPgo8UD48Rk9OVCBjb2xvcj0jZmYwMDdmIHNpemU9NCBmYWNlPSJib29rbWFuIG9sZCBzdHls ZSwgbmV3IHlvcmssIHRpbWVzLCBzZXJpZiI+PEVNPjxTVFJPTkc+TmFuY3k8L1NUUk9ORz48L0VN PjwvRk9OVD48L1A+CjxQPjxGT05UIGZhY2U9ImFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWYi PkluanVzdGljZSBhbnl3aGVyZSBpcyBhIHRocmVhdCB0byBqdXN0aWNlIGV2ZXJ5d2hlcmUuIC0t IERyLiBNYXJ0aW4gTC4gS2luZywgSnIuPC9GT05UPjwvUD4KPERJVj48QlI+PC9ESVY+CjxESVYg c3R5bGU9IkZPTlQtRkFNSUxZOiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBGT05ULVNJ WkU6IDEycHQiPjxCUj4KPERJViBzdHlsZT0iRk9OVC1GQU1JTFk6IHRpbWVzIG5ldyByb21hbiwg bmV3IHlvcmssIHRpbWVzLCBzZXJpZjsgRk9OVC1TSVpFOiAxMnB0Ij48Rk9OVCBzaXplPTIgZmFj ZT1UYWhvbWE+CjxIUiBTSVpFPTE+CjxCPjxTUEFOIHN0eWxlPSJGT05ULVdFSUdIVDogYm9sZCI+ RnJvbTo8L1NQQU4+PC9CPiBtYWhlc2ggZ2FqYWJhciAmbHQ7bWFoZXNoMTQzYW5AZ21haWwuY29t Jmd0OzxCUj48Qj48U1BBTiBzdHlsZT0iRk9OVC1XRUlHSFQ6IGJvbGQiPlRvOjwvU1BBTj48L0I+ IGRldmVsb3BtZW50QGRydXBhbC5vcmc8QlI+PEI+PFNQQU4gc3R5bGU9IkZPTlQtV0VJR0hUOiBi b2xkIj5TZW50OjwvU1BBTj48L0I+IFdlZCwgSmFudWFyeSAxMiwgMjAxMSAxOjM3OjU5IEFNPEJS PjxCPjxTUEFOIHN0eWxlPSJGT05ULVdFSUdIVDogYm9sZCI+U3ViamVjdDo8L1NQQU4+PC9CPiBb ZGV2ZWxvcG1lbnRdIGNyZWF0aW5nIHBvcC11cCB3aW5kb3cgZm9yIGRlbGV0ZSBhbmQgZWRpdCBh Y3Rpb25zIGluIHRhYmxlIGluIG1vZHVsZSBmaWxlPEJSPjwvRk9OVD48QlI+SGksPEJSPgo8RElW IGNsYXNzPWdtYWlsX3F1b3RlPkkgaGF2ZSB3cml0dGVuIGEgY3VzdG9tZSBtb2R1bGUgdGFibGUg Zm9yIHNob3dpbmcgc29tZSBpbmZvcm1hdGlvbiB3aGljaCBpcyBmZXRjaGVkIGZyb20gZGF0YWJh c2UgYW5kIGV2ZXJ5IHJvdyBpcyBoYXZpbmcgZWRpdCBhbmQgZGVsZXRlIGFjdGlvbnMuIEJvdGgg YXJlIHdvcmtpbmcgZmluZS4gQnV0IHdoZW5ldmVyIEkgY2xpY2sgb24gb24gZWRpdCBvciBkZWxl dGUgYWN0aW9uIGFjdGlvbiBpdCBvcGVucyBpbiBvdGhlciB3aW5kb3cgbGVhdmluZyBjdXJyZW50 IHBhZ2UuIEkgd2FudCB0aGVzZSBhY3Rpb25zIHRvIGJlIHRha2VuIHBsYWNlIGluIHBvcC11cCB3 aW5kb3cuIDxCUj48QlI+TXkgdGFibGUgb24gZHJ1cGFsIHNjcmVlbiBpcyBhcyBmb2xsb3dzPEJS PjxCUj4KPFRBQkxFIGJvcmRlcj0wIGNlbGxQYWRkaW5nPTA+CjxUSEVBRD4KPFRSPgo8VEQgc3R5 bGU9IlBBRERJTkctQk9UVE9NOiAwLjc1cHQ7IFBBRERJTkctTEVGVDogMC43NXB0OyBQQURESU5H LVJJR0hUOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgo8UCBzdHlsZT0iVEVYVC1BTElH TjogY2VudGVyOyBMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNz PU1zb05vcm1hbCBhbGlnbj1jZW50ZXI+PEI+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+ U2xObzwvU1BBTj48L0I+PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAuNzVw dDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1U T1A6IDAuNzVwdCI+CjxQIHN0eWxlPSJURVhULUFMSUdOOiBjZW50ZXI7IExJTkUtSEVJR0hUOiBu b3JtYWw7IE1BUkdJTi1CT1RUT006IDBwdCIgY2xhc3M9TXNvTm9ybWFsIGFsaWduPWNlbnRlcj48 Qj48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij5Eb2N0b3IgTmFtZTwvU1BBTj48L0I+PC9Q PjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAuNzVwdDsgUEFERElORy1MRUZUOiAw Ljc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQIHN0 eWxlPSJURVhULUFMSUdOOiBjZW50ZXI7IExJTkUtSEVJR0hUOiBub3JtYWw7IE1BUkdJTi1CT1RU T006IDBwdCIgY2xhc3M9TXNvTm9ybWFsIGFsaWduPWNlbnRlcj48Qj48U1BBTiBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0Ij5HZW5kZXI8L1NQQU4+PC9CPjwvUD48L1REPgo8VEQgc3R5bGU9IlBBRERJ TkctQk9UVE9NOiAwLjc1cHQ7IFBBRERJTkctTEVGVDogMC43NXB0OyBQQURESU5HLVJJR0hUOiAw Ljc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgo8UCBzdHlsZT0iVEVYVC1BTElHTjogY2VudGVy OyBMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1zb05vcm1h bCBhbGlnbj1jZW50ZXI+PEI+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+U3RhdHVzPC9T UEFOPjwvQj48L1A+PC9URD4KPFREIHN0eWxlPSJQQURESU5HLUJPVFRPTTogMC43NXB0OyBQQURE SU5HLUxFRlQ6IDAuNzVwdDsgUEFERElORy1SSUdIVDogMC43NXB0OyBQQURESU5HLVRPUDogMC43 NXB0Ij4KPFAgc3R5bGU9IlRFWFQtQUxJR046IGNlbnRlcjsgTElORS1IRUlHSFQ6IG5vcm1hbDsg TUFSR0lOLUJPVFRPTTogMHB0IiBjbGFzcz1Nc29Ob3JtYWwgYWxpZ249Y2VudGVyPjxCPjxTUEFO IHN0eWxlPSJGT05ULVNJWkU6IDEycHQiPkFjdGlvbjwvU1BBTj48L0I+PC9QPjwvVEQ+PC9UUj48 L1RIRUFEPgo8VEJPRFk+CjxUUj4KPFREIHN0eWxlPSJQQURESU5HLUJPVFRPTTogMC43NXB0OyBQ QURESU5HLUxFRlQ6IDAuNzVwdDsgUEFERElORy1SSUdIVDogMC43NXB0OyBQQURESU5HLVRPUDog MC43NXB0Ij4KPFAgc3R5bGU9IkxJTkUtSEVJR0hUOiBub3JtYWw7IE1BUkdJTi1CT1RUT006IDBw dCIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDEycHQiPjI8L1NQQU4+ PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAuNzVwdDsgUEFERElORy1MRUZU OiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQ IHN0eWxlPSJMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1z b05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij5KYXlhcmFtIFNyaW5pdmFzYW48 L1NQQU4+PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAuNzVwdDsgUEFERElO Ry1MRUZUOiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVw dCI+CjxQIHN0eWxlPSJMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNs YXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij5tYWxlPC9TUEFOPjwv UD48L1REPgo8VEQgc3R5bGU9IlBBRERJTkctQk9UVE9NOiAwLjc1cHQ7IFBBRERJTkctTEVGVDog MC43NXB0OyBQQURESU5HLVJJR0hUOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgo8UCBz dHlsZT0iTElORS1IRUlHSFQ6IG5vcm1hbDsgTUFSR0lOLUJPVFRPTTogMHB0IiBjbGFzcz1Nc29O b3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+aW5hY3RpdmU8L1NQQU4+PC9QPjwv VEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAuNzVwdDsgUEFERElORy1MRUZUOiAwLjc1 cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQIHN0eWxl PSJMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1zb05vcm1h bD48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij48QSBocmVmPSJodHRwOi8vbG9jYWxob3N0 L2ZyL2RvY3Rvci9lZGl0LzIiIHJlbD1ub2ZvbGxvdyB0YXJnZXQ9X2JsYW5rPjxTUEFOIHN0eWxl PSJDT0xPUjogYmx1ZSI+RWRpdDwvU1BBTj48L0E+IHw8QSBocmVmPSJodHRwOi8vbG9jYWxob3N0 L2ZyL2RvY3Rvci9kZWxldGUvMiIgcmVsPW5vZm9sbG93IHRhcmdldD1fYmxhbms+PFNQQU4gc3R5 bGU9IkNPTE9SOiBibHVlIj4gRGVsZXRlPC9TUEFOPjwvQT48L1NQQU4+PC9QPjwvVEQ+PC9UUj4K PFRSPgo8VEQgc3R5bGU9IlBBRERJTkctQk9UVE9NOiAwLjc1cHQ7IFBBRERJTkctTEVGVDogMC43 NXB0OyBQQURESU5HLVJJR0hUOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgo8UCBzdHls ZT0iTElORS1IRUlHSFQ6IG5vcm1hbDsgTUFSR0lOLUJPVFRPTTogMHB0IiBjbGFzcz1Nc29Ob3Jt YWw+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+MzwvU1BBTj48L1A+PC9URD4KPFREIHN0 eWxlPSJQQURESU5HLUJPVFRPTTogMC43NXB0OyBQQURESU5HLUxFRlQ6IDAuNzVwdDsgUEFERElO Ry1SSUdIVDogMC43NXB0OyBQQURESU5HLVRPUDogMC43NXB0Ij4KPFAgc3R5bGU9IkxJTkUtSEVJ R0hUOiBub3JtYWw7IE1BUkdJTi1CT1RUT006IDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIHN0 eWxlPSJGT05ULVNJWkU6IDEycHQiPlBhdml0aHJhIE08L1NQQU4+PC9QPjwvVEQ+CjxURCBzdHls ZT0iUEFERElORy1CT1RUT006IDAuNzVwdDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkct UklHSFQ6IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQIHN0eWxlPSJMSU5FLUhFSUdI VDogbm9ybWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1zb05vcm1hbD48U1BBTiBzdHls ZT0iRk9OVC1TSVpFOiAxMnB0Ij5mZW1hbGU8L1NQQU4+PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFE RElORy1CT1RUT006IDAuNzVwdDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6 IDAuNzVwdDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQIHN0eWxlPSJMSU5FLUhFSUdIVDogbm9y bWFsOyBNQVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9O VC1TSVpFOiAxMnB0Ij5hY3RpdmU8L1NQQU4+PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1C T1RUT006IDAuNzVwdDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVw dDsgUEFERElORy1UT1A6IDAuNzVwdCI+CjxQIHN0eWxlPSJMSU5FLUhFSUdIVDogbm9ybWFsOyBN QVJHSU4tQk9UVE9NOiAwcHQiIGNsYXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1TSVpF OiAxMnB0Ij48QSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9lZGl0LzMiIHJlbD1u b2ZvbGxvdyB0YXJnZXQ9X2JsYW5rPjxTUEFOIHN0eWxlPSJDT0xPUjogYmx1ZSI+RWRpdDwvU1BB Tj48L0E+IHw8QSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3Rvci9kZWxldGUvMyIgcmVs PW5vZm9sbG93IHRhcmdldD1fYmxhbms+PFNQQU4gc3R5bGU9IkNPTE9SOiBibHVlIj4gRGVsZXRl PC9TUEFOPjwvQT48L1NQQU4+PC9QPjwvVEQ+PC9UUj4KPFRSPgo8VEQgc3R5bGU9IlBBRERJTkct Qk9UVE9NOiAwLjc1cHQ7IFBBRERJTkctTEVGVDogMC43NXB0OyBQQURESU5HLVJJR0hUOiAwLjc1 cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQiPgo8UCBzdHlsZT0iTElORS1IRUlHSFQ6IG5vcm1hbDsg TUFSR0lOLUJPVFRPTTogMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtU0la RTogMTJwdCI+NDwvU1BBTj48L1A+PC9URD4KPFREIHN0eWxlPSJQQURESU5HLUJPVFRPTTogMC43 NXB0OyBQQURESU5HLUxFRlQ6IDAuNzVwdDsgUEFERElORy1SSUdIVDogMC43NXB0OyBQQURESU5H LVRPUDogMC43NXB0Ij4KPFAgc3R5bGU9IkxJTkUtSEVJR0hUOiBub3JtYWw7IE1BUkdJTi1CT1RU T006IDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIHN0eWxlPSJGT05ULVNJWkU6IDEycHQiPlJh dmkgTWFuZGF5YW08L1NQQU4+PC9QPjwvVEQ+CjxURCBzdHlsZT0iUEFERElORy1CT1RUT006IDAu NzVwdDsgUEFERElORy1MRUZUOiAwLjc1cHQ7IFBBRERJTkctUklHSFQ6IDAuNzVwdDsgUEFERElO Ry1UT1A6IDAuNzVwdCI+CjxQIHN0eWxlPSJMSU5FLUhFSUdIVDogbm9ybWFsOyBNQVJHSU4tQk9U VE9NOiAwcHQiIGNsYXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1TSVpFOiAxMnB0Ij5t YWxlPC9TUEFOPjwvUD48L1REPgo8VEQgc3R5bGU9IlBBRERJTkctQk9UVE9NOiAwLjc1cHQ7IFBB RERJTkctTEVGVDogMC43NXB0OyBQQURESU5HLVJJR0hUOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAw Ljc1cHQiPgo8UCBzdHlsZT0iTElORS1IRUlHSFQ6IG5vcm1hbDsgTUFSR0lOLUJPVFRPTTogMHB0 IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+YWN0aXZlPC9T UEFOPjwvUD48L1REPgo8VEQgc3R5bGU9IlBBRERJTkctQk9UVE9NOiAwLjc1cHQ7IFBBRERJTkct TEVGVDogMC43NXB0OyBQQURESU5HLVJJR0hUOiAwLjc1cHQ7IFBBRERJTkctVE9QOiAwLjc1cHQi Pgo8UCBzdHlsZT0iTElORS1IRUlHSFQ6IG5vcm1hbDsgTUFSR0lOLUJPVFRPTTogMHB0IiBjbGFz cz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtU0laRTogMTJwdCI+PEEgaHJlZj0iaHR0cDov L2xvY2FsaG9zdC9mci9kb2N0b3IvZWRpdC80IiByZWw9bm9mb2xsb3cgdGFyZ2V0PV9ibGFuaz48 U1BBTiBzdHlsZT0iQ09MT1I6IGJsdWUiPkVkaXQ8L1NQQU4+PC9BPiB8PEEgaHJlZj0iaHR0cDov L2xvY2FsaG9zdC9mci9kb2N0b3IvZGVsZXRlLzQiIHJlbD1ub2ZvbGxvdyB0YXJnZXQ9X2JsYW5r PjxTUEFOIHN0eWxlPSJDT0xPUjogYmx1ZSI+IERlbGV0ZTwvU1BBTj48L0E+PC9TUEFOPjwvUD48 L1REPjwvVFI+PC9UQk9EWT48L1RBQkxFPjxCUj53aGVuIGkgY2xpY2sgZGVsZXRlIGJ1dHRvbiBp IHNob3VsZCBnZXQgcG9wLXVwIHdpbmRvdyB3aXRoIHRoZSBkaWFsb2d1ZSBsaWtlIHRoaXM7PEJS PjxCUj4KPEgyPkFyZSBZb3UgU3VyZSBZb3UgV2FudCBUbyBEZWxldGUgVGhpcyBEb2N0b3I/PC9I Mj5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLjxJTlBVVCB2YWx1ZT0xIHR5cGU9aGlkZGVu IG5hbWU9Y29uZmlybT4gCjxESVY+PElOUFVUIHZhbHVlPURlbGV0ZSB0eXBlPXN1Ym1pdCBuYW1l PW9wPiA8QSBocmVmPSJodHRwOi8vbG9jYWxob3N0L2ZyL2RvY3RvciIgcmVsPW5vZm9sbG93IHRh cmdldD1fYmxhbms+Q2FuY2VsPC9BPjxCUj48QlI+V2hlbiBJIGNsaWNrIGVkaXQgYnV0dG9uIEkg c2hvdWxkIGdldCBteSBlZGl0IGZvcm0sPEJSPjxTUEFOPgo8RElWPjwvRElWPjwvU1BBTj4KPERJ Vj48TEFCRUw+Rmlyc3QgTmFtZTogPC9MQUJFTD48SU5QVVQgdmFsdWU9amF5YXJhbSBtYXhMZW5n dGg9MTI4IHNpemU9NjAgbmFtZT1maXJzdG5hbWU+IDwvRElWPgo8RElWPjxMQUJFTD5MYXN0IE5h bWU6IDwvTEFCRUw+PElOUFVUIHZhbHVlPXNyaW5pdmFzYW4gbWF4TGVuZ3RoPTEyOCBzaXplPTYw IG5hbWU9bGFzdG5hbWU+IDwvRElWPgo8RElWPjxMQUJFTD5HZW5kZXI6IDwvTEFCRUw+CjxESVY+ CjxESVY+PExBQkVMPjxJTlBVVCB2YWx1ZT0wIENIRUNLRUQgdHlwZT1yYWRpbyBuYW1lPWdlbmRl cj4gbWFsZTwvTEFCRUw+IDwvRElWPgo8RElWPjxMQUJFTD48SU5QVVQgdmFsdWU9MSB0eXBlPXJh ZGlvIG5hbWU9Z2VuZGVyPiBmZW1hbGU8L0xBQkVMPiA8L0RJVj48L0RJVj48L0RJVj4KPERJVj48 TEFCRUw+U3RhdHVzOiA8L0xBQkVMPgo8RElWPgo8RElWPjxMQUJFTD48SU5QVVQgdmFsdWU9MCB0 eXBlPXJhZGlvIG5hbWU9c3RhdHVzPiBhY3RpdmU8L0xBQkVMPiA8L0RJVj4KPERJVj48TEFCRUw+ PElOUFVUIHZhbHVlPTEgQ0hFQ0tFRCB0eXBlPXJhZGlvIG5hbWU9c3RhdHVzPiBpbmFjdGl2ZTwv TEFCRUw+IDwvRElWPjwvRElWPjwvRElWPjxJTlBVVCB2YWx1ZT0xIHR5cGU9aGlkZGVuIG5hbWU9 Y29uZmlybT4gCjxESVY+PElOUFVUIHZhbHVlPVNhdmUgdHlwZT1zdWJtaXQgbmFtZT1vcD4gPEEg aHJlZj0iaHR0cDovL2xvY2FsaG9zdC9mci9kb2N0b3IiIHJlbD1ub2ZvbGxvdyB0YXJnZXQ9X2Js YW5rPkNhbmNlbDwvQT48L0RJVj4mbmJzcDs8QlI+Y29tcGxldGUgY29kZSBvZiBteSBtb2R1bGUg ZmlsZSBpcyBhcyBmb2xsb3dzOjxCUj48QlI+PEkgc3R5bGU9IkZPTlQtRkFNSUxZOiB2ZXJkYW5h LCBzYW5zLXNlcmlmIj48Qj4mbHQ7P3BocDxCUj48QlI+ZnVuY3Rpb24gZG9jdG9yX21lbnUoKSB7 PEJSPiZuYnNwOyAkaXRlbXMgPSBhcnJheSgpOzxCUj4mbmJzcDs8QlI+Jm5ic3A7ICRpdGVtc1sn ZG9jdG9yJ10gPSBhcnJheSg8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICd0aXRsZScgPSZndDsgdCgn RG9jdG9ycycpLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJ3BhZ2UgY2FsbGJhY2snID0mZ3Q7J2Rv Y3RvcnNfbGlzdCcsPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAnYWNjZXNzIGFyZ3VtZW50cycgPSZn dDsgYXJyYXkoJ2FjY2VzcyBkb2N0b3InKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICd0eXBlJyA9 Jmd0OyBNRU5VX05PUk1BTF9JVEVNLDxCUj4mbmJzcDsgKTs8QlI+Jm5ic3A7PEJSPiZuYnNwOyAk aXRlbXNbJ2RvY3Rvci9kZWxldGUvJWRvY3Rvcl91c2VyJ10gPSBhcnJheSg8QlI+Jm5ic3A7Jm5i c3A7Jm5ic3A7ICd0aXRsZScgPSZndDsgdCgnRGVsZXRlIGRvY3RvcicpLDxCUj4mbmJzcDsmbmJz cDsmbmJzcDsgJ3BhZ2UgY2FsbGJhY2snID0mZ3Q7ICdkcnVwYWxfZ2V0X2Zvcm0nLDxCUj4mbmJz cDsmbmJzcDsmbmJzcDsgJ3BhZ2UgYXJndW1lbnRzJyA9Jmd0OyBhcnJheSgnZG9jdG9yX2RlbGV0 ZV9jb25maXJtJywgMiksPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAnYWNjZXNzIGFyZ3VtZW50cycg PSZndDsgYXJyYXkoJ2FjY2VzcyBkb2N0b3InKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICd0eXBl JyA9Jmd0OwogTUVOVV9DQUxMQkFDSyw8QlI+Jm5ic3A7ICk7PEJSPiZuYnNwOyRpdGVtc1snZG9j dG9yL2VkaXQvJWRvY3Rvcl91c2VyJ10gPSBhcnJheSg8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICd0 aXRsZScgPSZndDsgdCgnRWRpdCBGb3JtJyksPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAncGFnZSBj YWxsYmFjaycgPSZndDsgJ2RydXBhbF9nZXRfZm9ybScsPEJSPidwYWdlIGFyZ3VtZW50cycgPSZn dDsgYXJyYXkoJ2RvY3Rvcl9lZGl0X2NvbmZpcm0nLCAyKSw8QlI+Jm5ic3A7Jm5ic3A7ICdhY2Nl c3MgYXJndW1lbnRzJyA9Jmd0OyBhcnJheSgnYWNjZXNzIGRvY3RvcicpLDxCUj4mbmJzcDsmbmJz cDsmbmJzcDsgJ3R5cGUnID0mZ3Q7IE1FTlVfTk9STUFMX0lURU0sPEJSPiZuYnNwOyApOzxCUj4m bmJzcDsgcmV0dXJuICRpdGVtczs8QlI+fTxCUj48QlI+ZnVuY3Rpb24gZG9jdG9yc19saXN0KCkg ezxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJGhlYWRlciA9IGFycmF5KHQoU2wuTm8pLHQoJ0RvY3Rv ciBOYW1lJyksIHQoJ0dlbmRlcicpLCZuYnNwOyB0KCdTdGF0dXMnKSwgdCgnQWN0aW9uJykpOzxC Uj4mbmJzcDs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIHtk b2N0b3J9Ijs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICRycyA9IGRiX3F1ZXJ5KCRxdWVyeSk7PEJS PiZuYnNwOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJHJvdyA9IGFycmF5KCk7PEJSPiZuYnNwOzxC Uj4mbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCRycykgezxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7IHdoaWxlICgkZGF0YSA9IGRiX2ZldGNoX29iamVjdCgkcnMpKQogezxC Uj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJGRvY3RvcmlkID0gJGRhdGEtJmd0 O2RvY3RvcmlkOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNw OyZuYnNwOyZuYnNwOyAkZ2VuZGVyID0gJGRhdGEtJmd0O2dlbmRlcjs8QlI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJHN0YXR1cyA9ICRk YXRhLSZndDtzdGF0dXMgOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7 ICZuYnNwOyZuYnNwOyZuYnNwOyAkcm93W10gPSBhcnJheSgkZG9jdG9yaWQsc3RyaXBzbGFzaGVz KHVjd29yZHMoJGRhdGEtJmd0O2ZpcnN0bmFtZSkpIC4gJyAnIC4gc3RyaXBzbGFzaGVzKHVjd29y ZHMoJGRhdGEtJmd0O2xhc3RuYW1lKSksICRnZW5kZXIsICRzdGF0dXMsIDxCUj4mbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAiJmx0O2EgaHJl Zj0nZG9jdG9yL2VkaXQveyRkYXRhLSZndDtkb2N0b3JpZH0nJmd0OyIgLiB0KCdFZGl0JykgLiZu YnNwOyAiJmx0Oy9hJmd0OyB8Jmx0O2EgaHJlZj0nZG9jdG9yL2RlbGV0ZS97JGRhdGEtJmd0O2Rv Y3RvcmlkfScmZ3Q7ICIuIHQoJ0RlbGV0ZScpLiImbHQ7L2EmZ3Q7IgogKTs8QlI+Jm5ic3A7Jm5i c3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyB9PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyB9PEJS PiZuYnNwOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJHN0ciAuPSB0aGVtZV90YWJsZSgkaGVhZGVy LCAkcm93KTs8QlI+Jm5ic3A7PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gJHN0cjs8QlI+ fTxCUj5mdW5jdGlvbiBkb2N0b3JfdXNlcl9sb2FkKCRkb2N0b3JpZCkgezxCUj4mbmJzcDsmbmJz cDsmbmJzcDsgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00ge2RvY3Rvcn0gV0hFUkUgZG9jdG9yaWQg PSAlZCI7PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAkcnMgPSBkYl9xdWVyeSgkcXVlcnksICRkb2N0 b3JpZCk7PEJSPiZuYnNwOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCRycykgezxCUj4mbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7IHdoaWxlICgkZGF0YSA9IGRiX2ZldGNo X29iamVjdCgkcnMpKSB7PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsg Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiAkZGF0YTs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZu YnNwOyZuYnNwOyZuYnNwOyB9PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyB9PEJSPiZuYnNwOzxCUj4m bmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEZBTFNFOzxCUj59PEJSPjxCUj5mdW5jdGlvbiBwb3B1 cCgpPEJSPns8QlI+d2luZG93LmNvbmZpcm0oKTs8QlI+cmV0dXJuIGZhbHNlOzxCUj59PEJSPjxC Uj5mdW5jdGlvbiBkb2N0b3JfZGVsZXRlX2NvbmZpcm0oJmFtcDskZm9ybV9zdGF0ZSwgJGRvY3Rv cikgezxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJGZvcm1bJ19kb2N0b3InXSA9IGFycmF5KDxCUj4m bmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICcjdHlwZScgPSZndDsgJ3ZhbHVl Jyw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7CiAmbmJzcDsmbmJzcDsmbmJzcDsgJyN2YWx1ZScgPSZn dDsgJGRvY3Rvciw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICk7PEJSPiZuYnNwOzxCUj4mbmJzcDsm bmJzcDsmbmJzcDsgcmV0dXJuIGNvbmZpcm1fZm9ybSgkZm9ybSw8QlI+Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZuYnNwOyZuYnNwOyZuYnNwOyB0KCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRl IHRoaXMgZG9jdG9yPycpLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7 IGlzc2V0KCRfR0VUWydkZXN0aW5hdGlvbiddKSA/ICRfR0VUWydkZXN0aW5hdGlvbiddIDogImRv Y3RvciIsPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgdCgnVGhpcyBh Y3Rpb24gY2Fubm90IGJlIHVuZG9uZS4nKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZu YnNwOyZuYnNwOyB0KCdEZWxldGUnKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyB0KCdDYW5jZWwnKSk7PEJSPn08QlI+PEJSPmZ1bmN0aW9uIGRvY3Rvcl9kZWxldGVf Y29uZmlybV9zdWJtaXQoJGZvcm0sICZhbXA7JGZvcm1fc3RhdGUpIHs8QlI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICRmb3JtX3ZhbHVlcyA9ICRmb3JtX3N0YXRlWyd2YWx1ZXMnXTs8QlI+Jm5ic3A7PEJS PiZuYnNwOyZuYnNwOyZuYnNwOyBpZiAoJGZvcm1fc3RhdGVbJ3ZhbHVlcyddWydjb25maXJtJ10p IHs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAkZG9jdG9yID0KICRm b3JtX3N0YXRlWyd2YWx1ZXMnXVsnX2RvY3RvciddOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAkcXVlcnkgPSAiREVMRVRFJm5ic3A7IEZST00ge2RvY3Rv cn0gd2hlcmUgZG9jdG9yaWQ9ICRkb2N0b3ItJmd0O2RvY3RvcmlkIjs8QlI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyAkcnMgPSBkYl9xdWVyeSgkcXVlcnkpOzxCUj5kcnVwYWxfc2V0X21lc3NhZ2UodCgnRG9jdG9y IGhhcyBiZWVuIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpKTs8QlI+Jm5ic3A7ICZuYnNwOyZuYnNw OyZuYnNwOyB9Jm5ic3A7IGRydXBhbF9nb3RvKCJkb2N0b3IiKTs8QlI+fTxCUj48QlI+ZnVuY3Rp b24gZG9jdG9yX2VkaXRfY29uZmlybSgmYW1wOyRmb3JtX3N0YXRlLCRkb2N0b3IpezxCUj4mbmJz cDskZm9ybSA9IGFycmF5KCk7PEJSPiRmb3JtWydfZG9jdG9ycyddID0KIGFycmF5KDxCUj4mbmJz cDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICcjdHlwZScgPSZndDsgJ3ZhbHVlJyw8 QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICcjdmFsdWUn ID0mZ3Q7ICRkb2N0b3IsPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsg KTs8QlI+PEJSPiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIHtkb2N0b3J9IHdoZXJlIGRvY3Rvcmlk PSVkIjs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICRycyA9IGRiX3F1ZXJ5KCRxdWVyeSwkZG9jdG9y LSZndDtkb2N0b3JpZCk7PEJSPiRkYXRhPWRiX2ZldGNoX29iamVjdCgkcnMpOzxCUj4kZmlyc3Ru YW1lPSRkYXRhLSZndDtmaXJzdG5hbWU7PEJSPiRsYXN0bmFtZT0kZGF0YS0mZ3Q7bGFzdG5hbWU7 PEJSPiRnZW5kZXIxID0gJGRhdGEtJmd0O2dlbmRlcjs8QlI+JGdlbmRlciA9ICRnZW5kZXIxID8g MDogMTs8QlI+JHN0YXR1czEgPSAkZGF0YS0mZ3Q7c3RhdHVzIDs8QlI+JHN0YXR1cyA9ICRzdGF0 dXMxID8gMTogMDs8QlI+JGZvcm1bJ2ZpcnN0bmFtZSddPWFycmF5KDxCUj4mbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICcjdGl0bGUnPSZndDt0KCdGaXJzdCBOYW1lJyksPEJS PiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsKICcjdHlwZSc9Jmd0Oyd0ZXh0 ZmllbGQnLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJyNkZWZhdWx0X3Zh bHVlJz0mZ3Q7JGRhdGEtJmd0O2ZpcnN0bmFtZSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IDxCUj4mbmJzcDsgKTs8QlI+JGZvcm1bJ2xhc3RuYW1lJ109YXJyYXko PEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJyN0aXRsZSc9Jmd0O3Qo J0xhc3QgTmFtZScpLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICcj dHlwZSc9Jmd0Oyd0ZXh0ZmllbGQnLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgJyNkZWZhdWx0X3ZhbHVlJyA9Jmd0OyAkbGFzdG5hbWUsPEJSPiZuYnNw OyZuYnNwOyZuYnNwOwogKTs8QlI+JGZvcm1bJ2dlbmRlciddPWFycmF5KDxCUj4mbmJzcDsmbmJz cDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7ICcjdGl0bGUnPSZndDt0KCdHZW5kZXInKSw8QlI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAnI3R5cGUnPSZndDsncmFkaW9z Jyw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDxCUj4mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgJyNvcHRpb25zJyA9Jmd0OyBhcnJheSh0KCdtYWxlJyksIHQo J2ZlbWFsZScpKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICcjZGVmYXVsdF92YWx1ZScgPSZndDsgdmFyaWFibGVfZ2V0KCdnZW5kZXInLCRnZW5kZXIp LDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsKICk7PEJSPiRmb3JtWydzdGF0dXMnXT1hcnJheSg8QlI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyAnI3RpdGxlJz0mZ3Q7dCgnU3Rh dHVzJyksPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgJyN0eXBlJz0m Z3Q7J3JhZGlvcycsPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAnI29wdGlvbnMnID0mZ3Q7IGFycmF5KHQoJ2FjdGl2 ZScpLCB0KCdpbmFjdGl2ZScpKSw8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICcjZGVmYXVsdF92YWx1ZScg PSZndDsgdmFyaWFibGVfZ2V0KCdzdGF0dXMnLCRzdGF0dXMpLDxCUj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPEJSPiZuYnNwOyZuYnNwOyZuYnNw OyApOzxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgPEJSPnJldHVybgogY29uZmlybV9mb3JtKCRmb3Jt LHQoJycpLDxCUj4mbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7IGlzc2V0KCRf R0VUWydkZXN0aW5hdGlvbiddKSA/ICRfR0VUWydkZXN0aW5hdGlvbiddIDogImRvY3RvciIsPEJS PiZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgdCgnJyksPEJSPiZuYnNwOyZu YnNwOyZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsgdCgnU2F2ZScpLDxCUj4mbmJzcDsmbmJzcDsm bmJzcDsgJm5ic3A7Jm5ic3A7Jm5ic3A7IHQoJ0NhbmNlbCcpKTs8QlI+fTxCUj48QlI+ZnVuY3Rp b24gZG9jdG9yX2VkaXRfY29uZmlybV9zdWJtaXQoJGZvcm0sICZhbXA7JGZvcm1fc3RhdGUpPEJS Pns8QlI+aWYgKCRmb3JtX3N0YXRlWyd2YWx1ZXMnXVsnY29uZmlybSddKSB7PEJSPiRkb2N0b3Ig PSAkZm9ybV9zdGF0ZVsndmFsdWVzJ11bJ19kb2N0b3JzJ107PEJSPiRmb3JtX3N0YXRlWyd2YWx1 ZXMnXVsnZG9jdG9yaWQnXSA9ICRkb2N0b3ItJmd0O2RvY3RvcmlkOzxCUj4mbmJzcDskZmlyc3Ru YW1lID0gJGZvcm1fc3RhdGVbJ3ZhbHVlcyddWydmaXJzdG5hbWUnXTs8QlI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICRsYXN0bmFtZSA9ICRmb3JtX3N0YXRlWyd2YWx1ZXMnXVsnbGFzdG5hbWUnXTs8QlI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7ICRnZW5kZXIxPSAkZm9ybV9zdGF0ZVsndmFsdWVzJ11bJ2dlbmRl ciddOzxCUj4kZ2VuZGVyID0mbmJzcDsgJGdlbmRlcjEgPyB0KCdmZW1hbGUnKSA6IHQoJ21hbGUn KTs8QlI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICRzdGF0dXMxID0gJGZvcm1fc3RhdGVbJ3ZhbHVlcydd WydzdGF0dXMnXTs8QlI+JHN0YXR1cyA9ICRzdGF0dXMxID8gdCgnaW5hY3RpdmUnKSA6IHQoJ2Fj dGl2ZScpOzxCUj4kcXVlcnkgPSAiVVBEQVRFJm5ic3A7IHtkb2N0b3J9IFNFVCBmaXJzdG5hbWUg PSAnJGZpcnN0bmFtZScsIGxhc3RuYW1lPQogJyRsYXN0bmFtZScsJm5ic3A7IGdlbmRlciA9ICck Z2VuZGVyJywgc3RhdHVzID0gJyRzdGF0dXMnJm5ic3A7IFdIRVJFJm5ic3A7IGRvY3RvcmlkPSVk Ijs8QlI+Jm5ic3A7JHJzID0gZGJfcXVlcnkoJHF1ZXJ5LCRkb2N0b3ItJmd0O2RvY3RvcmlkKTsg fTxCUj5kcnVwYWxfZ290bygiZG9jdG9yIik7PEJSPn08QlI+PEJSPjwvQj48L0k+PFNQQU4gc3R5 bGU9IkZPTlQtRkFNSUxZOiB2ZXJkYW5hLCBzYW5zLXNlcmlmIj5BbnkgaGVscCBhcHByZWNpYXRl ZC48L1NQQU4+PEkgc3R5bGU9IkZPTlQtRkFNSUxZOiB2ZXJkYW5hLCBzYW5zLXNlcmlmIj48Qj48 QlI+PEJSPjwvQj48L0k+PC9ESVY+PEkgc3R5bGU9IkZPTlQtRkFNSUxZOiB2ZXJkYW5hLCBzYW5z LXNlcmlmIj48Qj5SZWdhcmRzLDwvQj48L0k+PEJSPjxGT05UIGNvbG9yPSM4ODg4ODg+TWFoZXNo IEdhamFiYXI8QlI+PC9GT05UPjwvRElWPjxCUj48L0RJVj48L0RJVj48L2Rpdj48L2JvZHk+PC9o dG1sPg== --===============8835139885367151080==--