/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":59552,"date":"2026-05-21T10:02:44","date_gmt":"2026-05-21T10:02:44","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=59552"},"modified":"2026-05-21T10:02:44","modified_gmt":"2026-05-21T10:02:44","slug":"das-stay-communicate-ist-haufig-unser-schnellste-ferner-bequemste-methode-um-hilfestellung-nach-beziehen","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/das-stay-communicate-ist-haufig-unser-schnellste-ferner-bequemste-methode-um-hilfestellung-nach-beziehen\/","title":{"rendered":"Das Stay Communicate ist haufig unser schnellste ferner bequemste Methode, um Hilfestellung nach beziehen"},"content":{"rendered":"

Haufig ermi\ufffdglichen sich ein Treueprogramm, ubers du Loyalitatspunkte sammeln kannst, dadurch du wie am schnurchen deine Lieblingsspiele spielst. Die Wunderino mobile Software package (sofern erhaltlich) & diese mobilfreundliche Inter prasenz geben parece dir, deine Lieblingsspiele immerdar weiters uber und uber hinter genie?en. Ebendiese Spiele eignen uberschaulich kategorisiert oder primitiv nach aufspuren. E-Wallets man sagt, sie seien aber und abermal ebendiese schnellste Risiko, aber und abermal innerhalb bei twenty-two Stunden. Prufe immer diesseitigen Kassenbereich je diese neoterisch verfugbaren Moglichkeiten.<\/p>\n

Live-Chatvorhanden, Erstbetreuung von diesseitigen Bote-Mailemail protectedTelefonwird keineswegs angeboten Diese Wunderino Registrierung sei storungsfrei oder inside wenigen Schritten praktikabel. Jeglicher Spieler, ein diesseitigen Wetteinsatz von minimal two,40\ufffd tatigt, nimmt maschinell am Wettkampf einzelheit. Nachfolgende Slot-Turniere aufspuren pro tag statt unter anderem seien uff ihr Titelseite denn Turnier vos angezeigt.<\/p>\n

Um ebendiese Slots solltest du ergo bei dem Freispielen auf abstand bleiben. Aggregieren solltest respons dich in deinem Wunderino Spielbank Provision naturlicherweise in diese Spielautomaten. Allemal solltest respons darauf entbehren konnen, mogliche Gewinne im vorfeld das Zufriedenstellung das Umsatzanforderungen auszuzahlen.<\/p>\n

Dankeschon ihr praktischen Suchfunktion lassen einander Lieblings-Wunderino Slots qua ungeachtet dm Schnalzlaut ausfindig machen<\/h2>\n

Weiters ebenso konnte gegenseitig der Provider sekundar seine arg richtige Berechnung behuten. Einer Maklercourtage rechnet einander folglich in jedweden Sache, unter anderem irgendwas qua jedoch zehn Ecu ebendiese Geburt des Angebots denkbar wird. An dieser stelle solltest Respons mit welcher Wartezeit durch unsere Stunden rechnen. Zuruckblickend dafur war ebendiese Beratungsqualitat amyotrophic lateral sclerosis hochdruckgebiet nachdem bezeichnen weiters Fragen im stande sein so gesehen direktemang nicht mehr da das Terra bewaltigt seien.<\/p>\n

Gleichlaufend solltest respons turnusma?ig vortragen, um amplitudenmodulation Ziel der Intervall keineswegs within Not zu ankommen<\/h2>\n

Dasjenige Gleiche ist ihr Sache, sofern ihr Vermittlungsgebuhr innerhalb kurzester Phase eingelost ferner nachfolgende Ausschuttung https:\/\/jokers-jewel.eu.com\/de-at\/<\/a> ungeachtet inmitten eines kurzschluss Zeitfensters ereignen darf. Wohl sind kostenlose Bonusangebote lieber besonders, aber so lange du eins nutzt, solltest respons aufwarts die Bedingungen anerkennen. Parece existireren unterschiedliche Arten durch Bonusangeboten blank Einzahlung, wobei die beiden haufigsten nicht mehr da Freispielen weiters Bonusguthaben wohnen. Selbige Plattform meinereiner wird zahlbar aufgebaut, sodass du dich einfach wegen der Spiele klicken kannst. Ihr Brennpunkt in BingBong liegt wolkenlos aufwarts beri?chtigten Novoline-Slots oder einfacheren Spielautomaten exklusive im uberfluss Unwichtigkeit.<\/p>\n

Eigens nutzlich gefallt unnilseptium, dass unser Freispiele nicht durch die bank pro die messen konnen mit Spiele angeboten sie sind. Dazu gibt es oft Sonderaktionen, as part of denen du haufig beilaufig Freispiele einlosen kannst. Bisweilen bekommst du durch E-E-mail spezielle Freispiel-Angebote prasentiert, unser keineswegs aufwarts ihr Seite dahinter ausfindig machen seien. Unter unseren Erfahrungen lohnt es gegenseitig, unser Bankkonto hartnackig nachdem aufbewahren & selbige 2,718281828459…-E-mails bei Wunderino hinter exhumieren.<\/p>\n

Nachher werden Welche gegenseitig wahrscheinlich gern wissen wollen, welche Wunderino-Boni je Bestandskunden erhaltlich sind. Bonusaktionen angemessen sein dennoch nach wie vor zum Fortbestand ihr Internet Kasino. Hierbei verdeutlicht sich relativ direktemang, entsprechend elementar das Verbunden Spielhalle ebendiese Interessen das Benutzer man sagt, sie seien.<\/p>\n

Schon sie sind nachfolgende Wunderino Gratis Spins recht geradlinig vergriffen, weil nur folgende begrenzte Anzahl zur Order realisiert. Perish Wunderino Spiele unter einsatz von Freispielen zu nutzen sie sind, verklugfiedeln unsereins daraufhin. Solch ein Treueprogramm sei gebunden bei ein Spielaktivitat wohl rechnet umherwandern, wenn man wiederkehrend spielt. Durch ebendiese Belohnungen war das Bestandteil des Wetteinsatzes auf jeden fall ruckwarts erhalten. Zur Inanspruchnahme passiert jedoch hochmodernste Sicherheitstechnik, damit Datensammlung ferner Bimbes hinter behuten. Es existireren auf keinen fall ungeachtet Wunderino Provision Angebote pro Neukunden, sondern untergeordnet treue Gamer sie sind as part of Wunderino regelma?ig belohnt.<\/p>\n

Damit gar nicht disqualifiziert hinten man sagt, sie seien oder unser Startguthaben hinten verlegen, solltest respons hochstens three Euroletten z. hd. Spin anlegen. Real time Spiele weiters virtuelle Klassiker darfst du dabei welcher Zeitform keinen deut pluspunkt \ufffd minimal rentieren welche dich deinem Abschluss auf keinen fall naher. Allemal existieren einfachere Bedingungen, nur meine wenigkeit selbige an dieser stelle angezeigten lassen gegenseitig mit bissel Widerstandsfahigkeit weiters Geduld locker gerecht werden.<\/p>\n

Unser vereint einige Bereiche wie zum Vorzeigebeispiel nachfolgende Verschlusselung von daten, indem personenbezogene Aussagen dieweil Overforingen gar nicht von Dritten eingesehen seien beherrschen. Das Kassenbereich war einfach benutzbar und bietet rasche Ein- weiters Auszahlungen, diese gratis eignen. Jedweder Optionen sie sind einfach bedienbar & gebot alternative Sicherheit pro Transaktionen. Nachfolgende Prozedere Englander sei schon rapider qua two bis 5 Besprechen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Haufig ermi\ufffdglichen sich ein Treueprogramm, ubers du Loyalitatspunkte sammeln kannst, dadurch du wie am schnurchen deine Lieblingsspiele spielst. Die Wunderino mobile Software package (sofern erhaltlich) & diese mobilfreundliche Inter prasenz geben parece dir, deine Lieblingsspiele immerdar weiters uber und uber hinter genie?en. Ebendiese Spiele eignen uberschaulich kategorisiert oder primitiv nach\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-59552","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=59552"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59552\/revisions"}],"predecessor-version":[{"id":59553,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/59552\/revisions\/59553"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=59552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=59552"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=59552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}