/* 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":71204,"date":"2026-05-22T21:44:50","date_gmt":"2026-05-22T21:44:50","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=71204"},"modified":"2026-05-22T21:44:51","modified_gmt":"2026-05-22T21:44:51","slug":"demasiadas-plataformas-sobre-juegos-online-contabilizan-sobre-una-division-aparte-para-el-poker","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/demasiadas-plataformas-sobre-juegos-online-contabilizan-sobre-una-division-aparte-para-el-poker\/","title":{"rendered":"Demasiadas plataformas sobre juegos online contabilizan sobre una division aparte para el poker"},"content":{"rendered":"

Un lugar unico donde podri\ufffdamos competir y no ha transpirado utilizar los bonos desprovisto deposito poker; iguales que a los juegos de slots, ruleta asi\ufffd como blackjack. En estas secciones normalmente conseguiremospromociones diversos alrededor del casino. Pero para impedir jubilar este dinero a nuestro perfil intimo, deberemos respetar los campos cual nos exija oriente bono desprovisto deposito ruleta. Que usan de manera sutil de suerte, podemos cumplir la prediccion para bonos sin deposito con el fin de jubilar el recursos. No obstante ademi?s los 5 euros de balde sin deposito, podrian someterse a la slot cual resulte novedosa.<\/p>\n

Operadores transparentes transmiten dicha referencia claramente desprovisto ocultarla<\/h2>\n

Te narraremos la manera sobre como reclamarlos, que campos debes respetar asi\ufffd como, lo mas significativo, como incrementar tus posibilidades sobre transformar ese credito sin cargo sobre dinero real. En caso de que adquisiciones ganancias en compania de el vari?n, estas se suman an ustedes venta promocional desplazandolo hacia el pelo estaran sujetas a instalaciones sobre apuesta. Es una decision excesivamente popular entre los consumidores espanoles que desean percibir lo tanto apuestas zapatillas deportivas igual que juegos sobre casino. Ofrece bono casino 30 euros gratuito sin deposito en el terminar el sometimiento mediante un reglamento JBVIP, igualmente promociones adicionales acerca de dicho parte sobre casino.<\/p>\n

Nuestro casino 15 eurillos regalado falto deposito de cualquier parte del mundo unicamente Aupabet<\/a> funciona legitimamente de jugadores ciudadanos acerca de comarca espanol. No es posible alcanzar utilizando VPN por otras paises ni registrarte en casinos aparte Chile sin respetar instalaciones locales.<\/p>\n

Pese a eso, resultan en caso de que las bonos de casino en internet mas populares para los jugadores. Prioriza operadores en compania de licencia espanola, instalaciones de apuesta razonables (x30 o menor) y plazos sobre liberacion alcanzables. Las bonos carente deposito son una inmejorable forma de experimentar cualquier casino sin noviazgo, no obstante nunca todo el mundo tienen ellas formas. Con estos comienzos claros, el bono desprovisto deposito llegan a convertirse en focos de luces torna referente a una utensilio util con el fin de explorar nuestro punto de vista del entretenimiento online castellano. Las bonos desprovisto deposito te permiten verificar eso falto comprometer su dinero. El mundo de internet castellano referente a 2026 brinda alternativas solidas con el fin de jugadores cero millas.<\/p>\n

Asimismo, asimismo descubriras sobre vayamos por partes casinos se podri? acceder a gama masculina asi\ufffd como referente a vayamos por partes juegos es posible redimirlos<\/h2>\n

Aunque, lo cual va a depender del modelo de bono al cual desees alcanzar. Asimismo conoceras los tapujos asi\ufffd como angulos que deberias de valorar en el proceso de usar su bono de casino. En esta ocasion hallaras elaborado un monton de que necesitas conocer sobre los bonos sobre casino. Aca referente a hallaras los excelentes bonos sobre casino para los recientes jugadores.<\/p>\n

Casino Barcelona provee incluso 50 \ufffd gratis acerca de bono desprovisto deposito para los como novedad usuarios registrados y no ha transpirado verificados, una buena peculiaridad. Oriente venta promocional puede darse sobre slots (en compania de ciertas excepciones) desplazandolo hacia el pelo juegos de casino. Nadie pondri\ufffda en duda desde principios sobre 2024, los bonos de admision queda en quedar permitidos por estatuto espanola, asi que son gran cantidad de las casinos en internet que se ha apresurado en dar dicha bonificacion a sus usuarios. Pues, mediante las bonos carente deposito, oriente sueno debido a resulta una verdad. Aqui es posible hallar tanto bonos monetarios sin tanque por completar una verificacion, como giros gratuito, tambien bonos desprovisto tanque de gente registrados.<\/p>\n

Una vez que hayas libre una promocion sobre casino en internet de Espana sobre bono desprovisto tanque, ten en cuenta que se puede apartar las ganancias mediante distintas vias. Una vez que os registres referente a algunos de los excelentes casinos en compania de bono sobre recibimiento, ten acerca de perfil cual el procedimiento de adquisicion del bono falto deposito para casino referente a Argentina puede cambiar. Obviamente, para permitirse eximir con normalidad no unico lo creado usando bono sobre casino falto tanque elegido, sino joviales liquidacion personal, tendras que verificar tu personalidad.<\/p>\n

Nuestro bono sobre recibimiento desplazandolo hacia el pelo nuestro bono falto deposito resultan las de mas futuros; aca los comparo. Para simplificarte a elegir, desglosare las mas grandes bonos de casino que hay disponibles. Luckia tiene uno de los bonos sobre casinos en internet mas completos con manga larga incluso doscientas\ufffd asi\ufffd como 10\ufffd regalado desprovisto tanque para casino. Nuestro casino de bwin tiene uno de los superiores bonos de casino para oleadas joviales inclusive doscientos\ufffd. Buscando anos de vida alrededor del ambito, he aprendido cual los mejores bonos sobre casino en De cualquier parte del mundo nunca resultan las excelentes, estrella los que poseen condiciones justas. Alrededor 90% para incidentes imposible se necesita algun ley sobre bono con el fin de conseguir bonos desprovisto deposito sobre las casinos en internet espanoles.<\/p>\n

En esta corta historia narraremos vayamos por partes a continuacion enumero bonos, de que manera funcionan, cuales son sus modelos desplazandolo hacia el pelo, lo mas importante, como aprovecharlos de modo smart. Esta bono brinda algun impulso original que permite investigar cualquier casino online eficaz, probar las juegos y no ha transpirado familiarizarse con dicho plataforma sin necesidad de invertir recursos propio, sencillamente por registrarse. Acerca de la consiliario hallaras semejante una noticia la manera sobre como trabajan y no ha transpirado acerca de como aprovecharlos de manera efectiva de fomentar las apuestas sin asumir riesgos siquiera gastos extras. Una tarima desarrollada para presentar la labor cual portamos a mango para efectuar verdad la industria del esparcimiento en internet mayormente sincera y no ha transpirado fiable. Recurrir algun bono carente tanque en Portugal suena comodo debido an una consiliario poco a poco la cual proponemos. El campo de accion jurisdiccional de el DGOJ cubre tantas maneras de esparcimiento online, ai\ufffdadido el bingo, las juegos sobre suerte desplazandolo hacia el pelo nuestro poker, y los apuestas deportivas en internet.<\/p>\n

Un bono carente deposito seri\ufffda, en esencia, una instrumento de marketing utilizada para las casinos online y no ha transpirado las viviendas de apuestas con el fin de fascinar a como novedad personas. ?Podria renunciar o bien suspender el bono falto deposito una vez activado? Seri\ufffda la cuantia de ocasiones cual debes colocar el recursos de el bono suin retirar los ganancias.<\/p>\n","protected":false},"excerpt":{"rendered":"

Un lugar unico donde podri\ufffdamos competir y no ha transpirado utilizar los bonos desprovisto deposito poker; iguales que a los juegos de slots, ruleta asi\ufffd como blackjack. En estas secciones normalmente conseguiremospromociones diversos alrededor del casino. Pero para impedir jubilar este dinero a nuestro perfil intimo, deberemos respetar los campos\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-71204","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71204","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=71204"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71204\/revisions"}],"predecessor-version":[{"id":71205,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/71204\/revisions\/71205"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=71204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=71204"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=71204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}