/* 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":122883,"date":"2026-05-25T13:20:24","date_gmt":"2026-05-25T13:20:24","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=122883"},"modified":"2026-05-25T13:20:25","modified_gmt":"2026-05-25T13:20:25","slug":"the-latest-feature-length-may-vary-based-on-how-of-numerous-scatters-was-in-fact-brought-about","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/the-latest-feature-length-may-vary-based-on-how-of-numerous-scatters-was-in-fact-brought-about\/","title":{"rendered":"The latest feature-length may vary based on how of numerous scatters was in fact brought about"},"content":{"rendered":"

S. professionals seeking to enjoyable gameplay, prompt crypto profits, and you will huge welcome bonuses<\/h2>\n

The new paytable suggests 10 simple plus 3 premium icons on the Lucky Duck on the internet position for real money game. Do you want to test the fortune on the chill-lookin position online game inside GAMEROOM?<\/p>\n

Obtaining 12+ scatters through the you to twist releases the bonus bullet<\/h2>\n

Past one, Sweeps Royal possess a refreshing group of Fish Games like Ocean Little princess, Ka Seafood Huntsman, and you can Octopus Legend. Your even have a different line of Buffalo harbors, as well as Buffalo Stack’n’s YNC, Buffalo Hunter, Ragin’ Buffalo, Buffalo unstoppable, Esoteric Buffalo \ufffd and many more. That’s one of the recommended register now offers found in conditions from South carolina, albeit the new GC tally is a bit white complete. Even if Jackpota mainly is targeted on slots, giving over 1,500 titles, you’ll also get a hold of jackpots, progressive harbors and you will real time video game suggests. Somewhere else, you will find a well-filled alive gambling enterprise, some really handy Jackpots, and some spare desk game you could potentially enjoy to feel an effective section nearer to what an internet casino feels like. Once you register, you could get the real Honor Local casino no deposit added bonus, it incentive can get you 2 Sweepstakes Gold coins on joining, and you can in addition to receive 100,000 Gold coins used to play for fun.<\/p>\n

Prolific company including Calm down Gaming and you may Hacksaw Gaming tend to discharge the latest game weekly, to your finest sweeps casinos instantaneously adding these to the library. Iron Financial falls you to your an excellent heist-determined caper invest Cuba’s underworld. The brand new game’s RTP consist at % within best sweepstakes gambling enterprises, which is more than mediocre, even if a lot less higher since Money Cart 2 otherwise various other contending ports.<\/p>\n

This enticing solutions is generated even more enticing into the unique DuckyLuck Welcome Bonus. will bring you the finest selection of casino games – ranging from electronic poker up on twenty three reel and you will 5 reel harbors. All of our expertise in every amounts of customer service, experience-strengthening, as well as, the swiftness to help you get your profits!<\/p>\n

All the have, including the MergeUp mechanic, tumbling reels, and incentive cycles, try obtainable for the both apple’s ios and you will Android gizmos. Its compatibility across the gadgets and representative-amicable user interface next enhance the means to access and you will exhilaration. Giovannis Treasures is actually a eight-reel game of the Betsoft having coal changing to expensive diamonds and satisfying highest earnings and you can base game payouts whenever coordinating four or even more clusters out of icons. If you are using specific ad clogging application, please look at the setup. You can discover about slot machines and exactly how it works within online slots book. If you’re looking to register from the an alternative local casino so you can play Happy Ducker, here are some our very own casino feedback part, where i have various acceptance incentives.<\/p>\n

It\ufffds ideal for both novices just who delight in lighthearted themes and you can knowledgeable professionals in search of fulfilling gameplay. The form try playful yet advanced level, with cartoonish design one to pop music up against a serene h2o-styled background. Click on the switch VegasWinner<\/a> lower than on condition that you want to remain right here to see more information. With regards to choosing a bona-fide money casino on the internet, DuckyLuck Casino stands out that have generous rewards, lightning-prompt earnings, and you can private online game. DuckyLuck Casino is amongst the greatest-ranked casinos on the internet to possess You.<\/p>\n

Nolimit Urban area is just one of the newest games organization from the sweepstakes gambling enterprises, but it’s swiftly become among the many greatest labels to possess harbors with a real income honors. Understand that sweeps casino that provide free online ports together with function lots of Holiday-themed promotions during the festive periods, so keep your attention discover specifically round the social network channels. Which have normally 1000+ harbors in the sweeps casinos, there are many different totally free position online game available. Obviously you can consider every one of them free-of-charge having fun with Silver Gold coins when enrolling before playing with Sweeps Gold coins and you will trying so you’re able to victory a real income awards if you want. While you are we now have currently seen some heavier hitters miss, there’s a lot far more coming down the latest range.<\/p>\n

The fresh 100 % free Spins round uses an icon conversion meter; getting scatters converts low-spending symbols for the Mystery Flannel, enhancing the frequency of the Wonderful Flannel triggers. Getting four or five scatters notably escalates the doing wild multiplier so you can 10x or 25x respectively. ELK’s trademark X-iter buy diet plan can be acquired, providing four game methods anywhere between a straightforward added bonus appear so you can a \ufffdSuper Added bonus\ufffd with guaranteed larger signs and you may maximum grid height. NoLimit Town goes on the most better-known team which have an activity-packed six-reel options contained in this online position discharge. It is a great Dog’s Lifetime regarding Knucklehead Syndicate was a free online position built on an excellent 5?twenty-three or 5?4 structure, and also the video game possess wild modifiers and you will added bonus-creating scatters which can head into the multiple-superimposed totally free twist series.<\/p>\n

Lucky Duck ports is available to play towards one another desktop computer and you can cellphones, so it’s smoother getting professionals to enjoy the game at any place. That’s it; the latest cellular adaptation tend to weight from that point, and you’ll feel like you used to be to tackle during the-application the entire day. This is because simple – LuckyLand’s mobile version is great sufficient, and all sorts of you need to do are manage a merchant account and you will gamble during the portrait form. You will find a pc form of your website, but irrespective of all that, I enjoyed to tackle for the cellular without being required to install the latest application, and that i play with an android equipment. The latest online slots games was ruled by the pre-developed random amount machines.<\/p>\n

In the incentive round, the newest multiplier steps will not reset anywhere between spins, and you can an excellent \ufffdComplete Net\ufffd feature can also be randomly result in to brush every seafood multipliers currently to the the fresh reels to own one substantial payout Especially, one twist can also be lead to the brand new Dream Drop Jackpot entry, giving participants an attempt at the four modern tiers, including the Mega Jackpot hence seed products in the \ufffd2 mil. Fish signs bring instant cash values and are also amassed randomly in the the beds base games or instantly for the Totally free Spins round when it achieve the base of grid. Settle down Gambling brings a good 5?4 \ufffdWays\ufffd online position slot which have a watch high-regularity jackpot prospective. As the 12,000x maximum win was conventional compared to its co-workers recently, the fresh % RTP and you can medium volatility allow good long-title slot readily available for extended courses and milling South carolina\/GC.<\/p>\n

Now, with players are completely susceptible to the latest whims away from Woman Luck, there’s no yes-flames game play setting right here which can be certain that wins. Well, regrettably, there is no Fortunate Duck jackpot being offered, whether or not modern if not. Here, people have to take a row off bobbing ducks to help you profit multiplier bonuses otherwise use of the big Currency controls where big multiplier incentives is actually up for grabs. The latest duck firing spread out symbol triggers a much more enjoyable Fortunate Duck bonus that can create players almost trust they are inside a district reasonable. The general look and feel are Far eastern, and that feeling is actually strengthened from the kind of icons viewed in this on line position, while the audio, that is brilliant and chirpy enough to moving to. All of it is decided not as much as a clear heavens and also you is also nearly smell sunlight shining to the grass.<\/p>\n","protected":false},"excerpt":{"rendered":"

S. professionals seeking to enjoyable gameplay, prompt crypto profits, and you will huge welcome bonuses The new paytable suggests 10 simple plus 3 premium icons on the Lucky Duck on the internet position for real money game. Do you want to test the fortune on the chill-lookin position online game\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-122883","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122883","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=122883"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122883\/revisions"}],"predecessor-version":[{"id":122885,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/122883\/revisions\/122885"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=122883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=122883"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=122883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}