text:
Gravitational Force Between Numbers
The gravitational force is a force that attracts any two objects with mass. In this challenge our objects will be Numbers and their mass will be their value. To do so, we don't care about the strength of the force but the direction of it.
Imagine this set of numbers
[1 6 9 4 6 9 7 6 4 4 9 8 7]

Each of them creates a force between itself and it's adjacent numbers. Under some conditions, this will cause another number to be attracted (moved) toward a number. When the number is bigger than the adjacent, it attracts it. Lets take a look at our previous example:
[1 → 6 → 9 ← 4 6 → 9 ← 7 ← 6 ← 4 4 → 9 ← 8 ← 7]

The number 1 is not big enough to move 6, but the number 6 is, etc... Basically, numbers are moved to the biggest adjacent number (also bigger than the number itself). If both of the adjacent numbers are equal it is not attracted then. It also happens when the number and it adjacent are equal.
This is only to show the attraction, but what happens after? Numbers that collide due to attraction are summed up:
[20 32 28]

So basically the challenge is, Given a set of numbers, output the result of the attracted set of numbers.

Example 1
Input  => [10 15 20 10 20 10 10]
          [10 → 15 → 20 10 20 ← 10 10]
Output => [45 10 30 10]

Example 2
Input  => [9 9 9 9 8 1 8]
          [9 9 9 9 ← 8 1 8]
Output => [9 9 9 17 1 8]

Example 3
Input  => [1 6 9 4 6 9 7 6 4 4 9 8 7]
          [1 → 6 → 9 ← 4 6 → 9 ← 7 ← 6 ← 4 4 → 9 ← 8 ← 7]
Output => [20 32 28]

Example 4
Input  => [1 2 3 2 1]
          [1 → 2 → 3 ← 2 ← 1]
Output => [9]

Example 5
Input  => [1]
Output => [1]

Example 6
Input  => [1 1]
Output => [1 1]

Example 7
Input  => [2 1 4]
Output => [2 5]

Notes

Attraction only happens once
Numbers are not attracted to non-adjacent Numbers
The set of numbers will only contain positive integers

Suggest adding a test case that collapses to a single integer.

[1 3 5 4 2] = 15?

@MagicOctopusUrn Yes

1 is not big enough to attract the number 6  This wording bothers the physicist in me.  (Well so do some of the other rules, but this one might be fixable by changing the wording without changing the problem definition).  The attraction force between two bodies, G*M*m / r^2, is equal for both bodies.  The lighter one moves more than the heavier one because of momentum, not because of a lack of attraction.  Maybe say "1 is not big enough to move 6".

But really you're defining "attract" as "pulled toward", rather than "creates a force", which conflicts with the earlier sentence "Each of them creates an attraction force to it's adjacent numbers".  So maybe rework that opening to say "each of them creates a force between itself and it's adjacent numbers.  Under some conditions, this will cause another number to be attracted (moved) toward a number."  I know this is just a terminology nitpick, and this model of gravitation is only vaguely similar to real physics, but it bothered me enough to want to write this comment.

Vaguely related.

Why [10 → 15 → 20 10 20 ← 10 10] and not [10 → 15 → 20 10 → 20 10 10]?

@hoosierEE Because it has the same attraction in both adjacent numbers. 20 10 20

JavaScript (ES6),  106 104  100 bytes
Saved 2 bytes thanks to @Shaggy
a=>a.filter(n=>n,[...a].map((v,i)=>a[a[p>v&(n=~~a[i+1])<p?k:i+(k=i,n>v&p<n)]+=x=a[i],p=v,i]-=x,p=0))

Try it online!
Commented
We first update the original input array a[] by iterating on a copy of it. During this step, all values 'attracted' by other ones are set to \$0\$.
Because the array is parsed from left to right, we can just add \$a_i\$ to \$a_{i+1}\$ whenever a value is attracted by its right neighbor.
Example: \$4\rightarrow5\rightarrow6\$ is turned into \$[0,\color{red}9,6]\$ and then \$[0,0,\color{red}{15}]\$.
But when several values in a row are attracted by their left neighbor, we need to add \$a_i\$ to the first attractor \$a_k\$ of this sequence (with \$k<i\$) rather than simply \$a_{i-1}\$.
Example: \$6\leftarrow5\leftarrow4\$ is turned into \$[\color{red}{11},0,4]\$ and then \$[\color{red}{15},0,0]\$.
[...a]                 // create a copy of a[]
.map((v, i) =>         // for each value v in a[] at position i:
  a[                   //   this statement updates a[i]:
    a[                 //     this statement updates either a[i] or an adjacent value:
      p > v &          //       if the previous value p is greater than v
      (n = ~~a[i + 1]) //       and the next value n
      < p ?            //       is less than p (attraction to the left):
        k              //         use k (k is initially undefined, but this code cannot
                       //         be triggered during the first iteration)
      :                //       else:
        i + (          //         use either i or i + 1:
          k = i,       //           set k to i
          n > v &      //           use i + 1 if n is greater than v
          p < n        //           and p is less than n (attraction to the right)
        )              //
    ] += x = a[i],     //     add x = a[i] to the entry defined above
    p = v,             //     update the previous value to v
    i                  //     actual index to update a[i]
  ] -= x,              //   subtract x from a[i]
  p = 0                //   start with p = 0
)                      // end of map()

We then filter out all entries equal to \$0\$.
a.filter(n => n)

From your explanation, it sounds like your code would fail for [1,3,5,3,1,2,1] and output [14,2], but it actually works correctly and outputs [13,3].

@EriktheOutgolfer I've rephrased the part which -- I think -- was misleading. Is that better?

Now it does mention the "first attractor" instead of just the "highest previous value", so I can understand what you mean.

Stax, 27 25 23 18 bytes
«╥╦.ê§┘h!@ÆEÿ☺╜╫♥B

Run and debug it
Output is separated by newlines.
This program operates on adjacent pairs in the array, and determines whether there should be a split between them using this procedure.
Consider some arbitrary input [... w x y z ...].  Here is how to determine if there should be a split between x and y.

If x == y, then yes.
If x > y, then iff z >= x.
If y > x, then iff w >= y.

The summing is left as an exercise.

Retina 0.8.2, 64 bytes
\d+
$*
(?<=(1+)) ((?=(1+\1))(?<!\3 \1 )|(?!\1)(?!1+ \1))

1+
$.&

Try it online! Link includes test suite. Explanation:
\d+
$*

Convert to unary.
(?<=(1+)) ((?=(1+\1))(?<!\3 \1 )|(?!\1)(?!1+ \1))

Remove the separators between attracted numbers. (?<=(1+)) sets \1 to the number before the separator. After the separator, there are then two cases:

The number after the separator is greater than both of the numbers before the separator
The number before the the separator is greater than both of the numbers after the separator

In these cases there is an attraction between the two numbers and deleting the separator causes the numbers to collide, adding them together.
1+
$.&

Convert to decimal.

Jelly, 23 bytes
Ø0jMÆmær0Ʋ3Ƥ×=4$o<ʋƝk⁸§

Try it online!
A monadic link which takes a list of integers as its argument and returns a list of integers.
Explanation
Ø0j                     | Join [0, 0] with input list
         Ʋ3Ƥ            | For each length 3 infix, do the following as a monad:
   M                    | - Indices of maximum
    Æm                  | - Mean
      ær0               | - Round to even (so the means of [1, 2, 3], [1, 2], [2, 3] and [1, 3] will all round to 2
                  ʋƝ    | For each neighbouring pair, do the following as a dyad:
            ×           | - Multiply
             =4$        | - Check if equal to 4
                o       | - Or
                 <      | - First number less than second
                    k⁸  | Split input after truthy values of the above
                      § | Sum, vectorised

Some inspiration taken from @recursive’s Stax answer.

C (gcc), 111 bytes
a,b,c,s;P(){s=!printf("%d ",s);}f(int*v){for(b=s=0,c=*v;a=b,b=c;a<b|b<a&c<a||P(),s+=b,b<c&c<=a|!c&&P())c=*++v;}

Try it online!
Takes a zero-terminated array of integers.
Explanation
a,b,c,  // Three consecutive elements of input array
s;      // Accumulator for sum
P(){s=!printf("%d ",s);}  // Print and clear s
f(int*v){
    for(
        // Init
        b=s=0,
        c=*v;
        // Loop test
        a=b,  // Shift b into a
        b=c;  // Shift c into b, exit if zero
        // Post loop
        a<b|b<a&c<a||P(),  // Print if a==b || (b<a && a<=c)
        s+=b,  // Accumulate
        b<c&c<=a|!c&&P()   // Print if c==0 || (b<c && c<=a)
    )
        // Loop body
        c=*++v;  // Read next number into c
}

Python 2, 162 bytes
l=input()
a=[(L<R>C)-(R<L>C)for L,C,R in zip([0]+l,l,l[1:]+[0])]
while any(a):
 i=0
 while a[i]==0:i+=1
 m=a.pop(i);x,y=[i,i+m][::m];l[x:y+1]=l[i]+l[i+m],
print l

Try it online!

J, 45 bytes
+//.~0,[:+/\2(<+.1=*)/\3(>./1:/@I.@E.])\0,,&0

Try it online!
Inspired by recursive's original Stax answer

R, 222 196 173 bytes
Here is a solution with some help from Robin Ryder
n=length(d<-diff(y<-x<-scan()));l=c(1,sign(d[-n]+d[-1]),-1);m=!!l*n&c(d[1]>0,d[-1]>0|d[-n]<0,d[n]<0);for(t in 1:n){for(i in which(m))y[a]=y[a<-i+l[i]]+x[i];y=x=y-x*m};x[!m]

Try it online!
A short set of comments
n=length(d<-diff(y<-x<-scan()));  #read input and compute pairwise differences
                    #d[-n]+d[-1]: compare left and right differences
l=c(1,sign(d[-n]+d[-1]),-1)                 #direction of attraction
m=!!l*n&                          #indices of attracted numbers
  c(d[1]>0,d[-1]>0|d[-n]<0,d[n]<0)
                                   #!!l*n eliminates zeroes in l & the case n==0
for(t in 1:n){                   #excessive loop on transfers
 for(i in which(m))
   y[a]=y[a<-i+l[i]]+x[i]         #transfer right vs. left
 y=x=y-m*x}                        #complete transfer
x[!m]                             #output

-4 bytes with sign(e) instead of (e>0)-(e<0)

also the {} in the for loop are unnecessary since there is only one instruction in the loop.

189 bytes with the above 2 comments + moving the definition of y.

179 bytes using the fact that m is a boolean

Python, 114 112 bytes
lambda a:eval('['+'+'.join(str(c)+',0'*((e<c>d)==(c<d>b))for b,c,d,e in zip([0]+a,a,a[1:]+[0],a[2:]+[0,0]))+']')

This uses the fact that the direction of the arrow doesn't actually matter, and that the presence of an arrow between a[i] and a[i+1] can be determined by looking at the range of four elements a[i-1:i+3].
Edit: Thank you to Jo King for the rule clarification

Perl 5, 156 147 bytes
$q='$F[$i';map{eval"\$i++while$q]$_"}"<$q+1]",">$q+1]&&$q]>$q+2]&&\$i<\@F"if eval"$q-1]-$q+1]||$q]>$q+1]";$\.=$".sum@F[$p..$i];($p=++$i)<@F&&redo}{

Try it online!

K (ngn/k), 47 bytes
{+/'x@.={x x}/(!#x)+{-/2=+/x<\:x 2 0}'3':0,x,0}

Try it online!
0,x,0 surround the argument with 0s
3': triplets of consecutive items
{ }' for each do
x 2 0 get last and first of the current triplet - x[2] and x[0]. they are the neighbours of x[1], on which the triplet is centred
x<\: compare using less-than against each of the current triplet
+/ sum. the result is a pair corresponding to x[2] and x[0]
2= check if either neighbour is greater than the other 2 elements from x, return a pair of 0-or-1 booleans
-/ subtract them. a result of -1 means x[1] is attracted to the left, 1 to the right, and 0 means it stays in place
(!#x)+ add 0 to the first item, 1 to the second, etc. this computes the indices towards which items are attracted
{x x}/ index with itself until convergence. the result are the effective indices to which each item is ultimately attracted
x@.= group x (the original argument) by those. the result is a list of lists
+/' sum each

Clojure, 299 252 bytes
(fn[l](loop[o[0]m(vec(map-indexed(fn[i v](def f #(max(nth l(+ % i)0)v))(-(f -1)(f 1)))l))i 0](defn f[x](update o(-(count o)x)#(+(l i)%)))(cond(<=(count m)i)(pop o)(>(m i)0)(recur(f 2)m(inc i))(<(m i)0)(recur(f 1)m(inc i))1(recur(conj(f 1)0)m(inc i)))))

Try it online!

Explanation:
(fn [l]
  (loop [o [0]
         m (vec(map-indexed (fn [i v] ; This maps each element l[i] of l to max(l[i-1], l[i]) - max(l[i+1], l[i])
                              (def f #(max (nth l (+ % i) 0) v))
                              (- (f -1) (f 1)))
                            l))       ; l[x] is zero when l[x] is out of bounds of the input vector l
         i 0]
    (defn f [x] (update o (- (count o) x) #(+ (l i) %)))
    ; Defines a function f(x) that returns the result of mapping the (x-1)th to last element of o over the function g(y) = l[i] + y

    (cond
      (<= (count m) i) (pop o) ; If the length of m is less than or equal to i, there are no more elements in m, so return all but the last element of o
      (> (m i) 0) (recur (f 2) m (inc i)) ; If m[i] is positive, l[i] is pulled toward to the previous element, so add l[i] to the 2nd to last element of o
      (< (m i) 0) (recur (f 1) m (inc i)) ; If m[i] is negative, l[i] is pulled toward the next element, so add l[i] to the last element of o
      1 (recur (conj (f 1) 0) m (inc i))))) ; 1 is truthy
      ; If the length of l is less than or equal to i, and m[i] is not positive or negative, we have m[i] = 0, so l[i] is not pulled toward any other element

APL (Dyalog Classic), 52 51 bytes
{+/(⊃∘⍵¨⊢)⌸{⍵[⍵]}⍣≡(⍳≢⍵)+{-/2=+⌿⍵∘.<1↓1⌽⍵}¨3,/∊0⍵0}

Try it online!
translation of my k answer

05AB1E, 21 bytes
0.øŒ3ùεZQXsÂU‚ÆZ≠}Å¡O

Try it online!


text:
Dad jokes are fun
We all know the classic dad joke that goes something like this:

Somebody says a sentence to describe their self (e.g. I'm tired or I'm confused).

A dad-joke enthusiast comes along and replies Hi <adjective>, I'm Dad!, because introductions follow the same format (I'm Peter follows the same format as I'm hungry).

Your job is to take in an input in the form of a self-descriptor, and output the appropriate dad-joke form, but instead of using the word "Dad", you'll use the name of the programming language you're programming in.
Test cases (assume that they are being parsed by Python):
I'm amazing                  Hi amazing, I'm Python!
I'm tired                    Hi tired, I'm Python!
I'm hungry                   Hi hungry, I'm Python!
I'm fat                      Hi fat, I'm Python!

Now assume that these test cases are being parsed by Golfscript:
I'm a programmer             Hi a programmer, I'm Golfscript!
I'm a question-writer        Hi a question-writer, I'm Golfscript!
I'm a Stack-Overflow-er      Hi a Stack-Overflow-er, I'm Golfscript!

The exact challenge:

Take in a string in the self-descriptor format (I'm <adjective> or I'm a(n) <noun>) using standard input or through a function.

Assume there is no ending punctuation.

Assume the word I'm is used and not I am.

Convert it to a dad-joke format - see the above examples for exactly how that should look.

Other stuff:

This is code-golf, so shortest byte count wins.

Follow the standard loophole rules - none of those, please.

Have fun!

One of the ways I considered telling my family that my wife was expecting was by telling as many dad jokes as possible and seeing who caught on!

Some example outputs end with exclamation and some do not.  What is the significance?

@recursive Whoops! That's a mistake on my part. All inputs should end in exclamation marks.

Usual practice is to give it much longer before accepting an answer, if you do so at all: https://codegolf.meta.stackexchange.com/q/2035/66252

And the tie-breaker isn't votes, it's who reached the lowest score first.

In the interest of 100% fairness, I think every contestant should be required to rename his language to a 100-byte name (in such a way that both the external and internal representation are 100 bytes) .  Then see how long the codes are.

I think the examples including a or an don't make sense (grammatically)

Does the "or" in "I'm  or I'm a(n) " mean both have to be parsed correctly by an answer, or can I choose which one?

You should probably require that the Language's Name appears verbatim in the source code, but allow it to be subtracted from the byte count for the answer.

Now waiting for the next golfing language that's name is an empty string.

@dzaima Both have to be parsed, but it should be the same procedure for both - you're just taking everything after I'm.

@connectyourcharger ah okay, I just wanted to see if splitting on spaces & taking the 2nd element was a valid algorithm.

I pity the people who program in this language: https://esolangs.org/wiki/A_programming_language_is_a_formal_language,_which_comprises_a_set_of_instructions_that_produce_various_kinds_of_output.

@CarlWitthoft And then, a language which has a built-in for its name wins.

No requirements on behavior if the input does not start with "I'm "?

V, 13 bytes
cEHi<esc>A, <C-r>" V!
Try it online!
Inspired by tsh's answer
This takes advantage of the fact that I'm is yanked from the start of the string when deleting the text from the start, and pastes it to the end with <C-r>" while in insert mode.

I just edited I'm to <C-O>p and then notice your answer...

A golfing language using Vim and escape takes 5 characters???

@mowwwalker Nope. It's really the byte 0x1B, but it's easier and more obvious what it means if you write it as <esc>. The same for <C-r>, which is really 0x12

@DJMcMayhem, ah that makes much more sense

C (gcc), 59 42 33 bytes
-17 bytes thanks to @Conor O'Brien noticing that the import wasn't necessary
-9 bytes thanks to @tsh pointing out a shorter, UB way of writing the function
a(x){printf("Hi%s, I'm C!",x+3);}

Try it online!
Chops off the first 3 characters of the input (removes I'm) and surrounds it with the desired text.

The program compiles without the import, so you can drop it for 42 bytes.

@ConorO'Brien nice catch!

And the int  is also optional.

(?) And also the char*, maybe...; so a(x){printf("Hi%s, I'm C!",x+3);} should work

@tsh: yes, in practice that will work on most 32-bit C implementations (where an int can hold a char* without truncating it), despite the undefined behaviour.  On x86-64 gcc on Linux, it will always fail in a PIE executable (typically no pointers are in the low 32 bits of virtual address space, and gcc won't happen to copy the high 32 bits while calculating x+3 from the function arg in the RDI register).  But in a non-PIE executable, static addresses are in the low 31 bits of virtual address space, so if the caller passed a string literal or a static buffer, it would happen to work.

Yes, but, you know, 42 - 33 = 9 not 11.

@tsh: haha, I totally missed that.

V, 13 bytes
cEHi<Esc>A, <C-O>p V!

Try it online!
New to V. Just knew it about 30 minutes ago. Anyway, this language is chosen just because its name only cost 1 byte. I'm not sure how to send <End> key in V. Most vim environment would accept <End> as a replacement of <Esc>A in this example. But, you know, V is 2 characters shorter than vim. :)
Thanks to @Candy Gumdrop, saves 1 byte.

Could save one byte by changing c3l to cE.

@CandyGumdrop Wow, I didn't know the upper case E before.

You could also do cW (which seems different, but is actually identical to cE) or 3s. Nice job! I was just about to post almost this exact answer when I saw that there were 2 V answers already, which was a nice surprise. I've tried several different approaches, but I'm not sure if it'll be possible to get <13 bytes.

Excel, 36 34 bytes
-2 bytes thanks to Johan du Toit.
Input goes into A1.
="Hi "&MID(A1,4,99)&", I'm Excel!"

First attempt:
=REPLACE(A1,1,3,"Hi")&", I'm Excel!"

="Hi "&MID(B13,4,99)&", I'm Excel" 34 bytes

Thank you @JohanduToit.  A1 instead of B13 so actually 33 bytes.

Missing the ! at the end of the output.

brainfuck, 164
,-.+>,>,----.++++>,.>,[.,]<<<+++++.----->>.[<]>[.>]<[->+++<]>++.[--->+<]>----.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>-.

Try it online!
The "brainfuck!" part of the string is generated with this tool, can probably be golfed further by hand.

Try BF Crunch

Stax, 13 bytes
â∞¿φ‼0▲(─ƒSqÄ

Run and debug it
Unpacked, ungolfed, and commented, it looks like this.
.Hip        print "Hi" with no newline
3tp         trim 3 characters from start of input and print with no newline
            final line is to print the unterminated compressed literal ", I'm stax!"
`dYgAwg_

I moved the final comment up one line since nothing may follow an unterminated string literal.
Run this one

I'm going to declare you the winner because your post had more votes, but you technically were tied with one other person. Congratulations!

Python 3, 35 34 bytes
lambda s:"Hi%s, I'm Python!"%s[3:]

Try it online!
-1 byte thanks to Embodiment of Ignorance
Also 34 bytes, using the newer formatted strings, thanks to Gábor Fekete:
lambda s:f"Hi{s[3:]}, I'm Python!"

Try it online!

34 bytes

What about losing lambda s: and replacing %s[3:] with %input()[3:]? (-4 bytes)

@niko if I understand what you are saying, that will not print anything. Default rules on this site are either a full program that prints output or a function that returns output. Usually what you are suggesting is called a snippet, and would not be a complete solution, it would need to be wrapped with print() for 7 more bytes, which is why Python answers usually use lambdas.

But how is that different from your (and actually most) answer(s) here? I mean both by themselves do not print anything, and both return the same output right? (Fairly new here - still getting used to CG)

@niko It's OK! With lambda s, I have defined an (anonymous) function. If you look at the header and the footer in the TIO link, I name that function f, and then called it with f("I'm whatever"). Then the function returns the expected output. With your snippet, you neither print nor return from a function - you just have a bit of code that evaluates to the correct result, but does not do anything with it. You can run programs multiple times, you can call functions multiple times, but a snippet is just a snippet.

See this meta post for where the decision was made.

alternative, but still 34-byte solution: lambda s:f"Hi{s[3:]}, I'm Python!"

@GáborFekete that was the first thing I tried, and I swear it gave me an error. No idea what I did differently.

Ruby -p, 32 27 26 bytes
-5 bytes by leveraging Nick Kennedy's Jelly answer.
-1 byte from splitting on a different point in the string. Also realized my old bytecount was wrong.
~/m/;$_="Hi#$', I'm Ruby!"

Explanation
                            # -p gets line of input and saves to $_
~/m/;                       # Find first 'm' in $_ using regex
     $_="Hi#$', I'm Ruby!"  # Save modified string to $_
                            # ($' is the string AFTER the most recent regex match)
                            # -p outputs $_ to screen

Try it online!

Cool! Where's your input?

@connectyourcharger added an explanation. Input is STDIN.

Gotcha. Good answer!

x86, 37 36 bytes
00000000: d1ee ac8a d8c6 0024 adc7 0448 698b d6b4  .......$...Hi...
00000010: 09cd 21ba 1901 cd21 c32c 2049 276d 2078  ..!....!., I'm x
00000020: 3836 2124                                86!$

Unassembled:
D1 EE       SHR  SI, 1                  ; point SI to DOS PSP (80H)
AC          LODSB                       ; load string length into AL, advance SI
8A D8       MOV  BL, AL                 ; put string length into BL
C6 40 24    MOV  BYTE PTR[BX][SI], '$'  ; add string terminator to end of string
AD          LODSW                       ; advance SI two chars
C7 04 6948  MOV  WORD PTR[SI], 'iH'     ; replace second and third char with 'Hi'
8B D6       MOV  DX, SI                 ; load offset for INT 21H string function
B4 09       MOV  AH, 9                  ; display a '$'-terminated string function
CD 21       INT  21H                    ; call DOS API
BA 0119     MOV  DX, OFFSET S           ; load offset for second part of string
CD 21       INT  21H                    ; call DOS API
C3          RET                         ; return to DOS
S  DB ", I'm x86!$"

A standalone executable DOS program.  Input from command line, output to screen.

* The exact "language" name here is a little ambiguous as CPU machine code isn't really a language in a formal sense. Going with "x86" as a generally understood and accepted name for the target platform.

[moving comment down from main thread] I'd say "x86" is the architecture, while "MA SM" would be one of the available languages on that architecture (note it does have a space in it though).

I think "x86" is probably fine really, it is golf after all :)

R 45 44 39 bytes
@Giuseppe Edit
sub("I'm(.*)","Hi\\1, I'm R",scan(,""))

@AaronHayman Edit
function(s)sub("I'm (.*)","Hi \\1, I'm R",s)

Try it online!

can save one byte replacing "(I'm ) with "(.* )

@AaronHayman, doesn't work for I'm a programmer (many spaces) because of greediness

@NahuelFouilleul Right, I wasn't sure if the first or last white space would be considere.

lazy quantifier(.*? ) could be used but it's the same length as (I'm )

Okay, I saved a byte, and I think this one works properly Try it online!

2 bytes by changing the sub to "I'm(.*)" and "Hi\\1, I'm R" and 3 bytes by taking input from stdin using scan: Try it online

Note that the TIO link does some messing with aliases to make it work for multiple strings.

@Giuseppe Smooth circumventing function

@niko that's a classic R golf trick! You should check out the other  tips there, too!

Java, 36 bytes
s->"Hi"+s.substring(3)+", I'm Java!"

Try it online.

Whitespace, 267 bytes
[S S S T    S S T   S S S N
_Push_72_H][T   N
S S _Print_as_character][S S S T    T   S T S S T   N
_Push_105_i][T  N
S S _Print_as_character][S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][N
S S N
_Create_Label_INPUT_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S N
S _Duplicate_input][S S S T S T S N
_Push_10][T S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_TRAILING][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_INPUT_LOOP][N
S S S N
_Create_Label_TRAILING][S N
N
_Discard_top][S S T T   S S S T S T N
_Push_-69_!][S S T  T   N
_Push_-1_e][S S T   T   T   N
_Push_-3_c][S S T   T   S T N
_Push_-5_a][S S S T S T S N
_Push_10_p][S S S T T   S T N
_Push_13_s][S S T   T   N
_Push_-1_e][S S S T T   T   S N
_Push_14_t][S S S T T   N
_Push_3_i][S S S T  S N
_Push_2_h][S S T    T   T   T   T   N
_Push_-15_W][S S T  T   S S S T T   S N
_Push_-70_space][S S S T    T   T   N
_Push_7_m][S S T    T   T   T   T   T   T   N
_Push_-63_'][S S T  T   T   T   S T N
_Push_-29_I][S T    S S T   T   N
_Copy_0-based_3rd_-70_space][S S T  T   T   T   S T S N
_Push_-58_,][N
S S T   N
_Create_Label_PRINT_TRAILING_LOOP][S S S T  T   S S T   T   S N
_Push_102][T    S S S _Add][T   N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_PRINT_TRAILING_LOOP]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.
Since Whitespace inputs one character at a time, the input should contain a trailing newline so it knows when to stop reading characters and the input is done.
Try it online (with raw spaces, tabs, and new-lines only).
Explanation in pseudo-code:
Print "Hi"
Read three characters from STDIN, and do nothing with them
Start INPUT_LOOP:
  Character c = STDIN as character
  If(c == '\n'):
    Call function PRINT_TRAILING
  Print c as character
  Go to next iteration of INPUT_LOOP

function PRINT_TRAILING:
  Discard the top of the stack (the c='\n' that was still on the stack)
  Push "!ecapsetihW m'I ," one character at a time
  Start PRINT_TRAILING_LOOP:
    Print as character
    Go to next iteration of PRINT_TRAILING_LOOP

The characters of ", I'm Whitespace!" are pushed in reversed order, and then printed in a loop. All values of these characters are also lowered by 102, which are added in the loop before printing to save bytes. This constant 102 to lower each character with is generated with this Java program. Also, instead of pushing the value -70 for both spaces twice, the second space in "!ecapsetihW m'I ," is copied from the first with the Copy builtin to save a few bytes.

PHP, 34 32 bytes
Hi<?=substr($argn,3)?>, I'm PHP!

Try it online!
Input via STDIN, call with -F.
$ echo I'm a Stack-Overflow-er|php -F dad.php
Hi a Stack-Overflow-er, I'm PHP!

$ echo I'm hungry|php -F dad.php
Hi hungry, I'm PHP!

Perl 5 -p, 31 24 bytes
Cut down based on clarifications from OP and a suggestion from @NahuelFouilleul.
/ /;$_="Hi $', $` Perl!"

Try it online!

29 bytes

also maybe $^X $] special variables could be used, however 5 is shorter than $]

Do you need to include the 5 as part of the name of the language?  i.e. could you argue that Perl 5 "thinks of itself" as "Perl"?  That was the case before Perl 6 existed, and codegolf answers only need to work on at least one implementation of the language, so pick an old one?

OP confirms that Perl is sufficient.  And that the use of the -p option doesn't have to be considered part of the language name.

IBM/Lotus Notes Formula Language, 61 62 bytes
+1 because I hadn't noticed the ! at the end of the output.
"Hi"+@Right(i;"I'm")+", I'm IBM/Lotus Notes Formula Language!"

Computed field formula that takes it's input from an editable field i. It would fail for "I'm an I'm" but since that wouldn't make any sense at all I'm assuming that it won't happen.
Shame that at 32 bytes, the name of the language is more than half the total length of the formula!
Screenshot below showing an example input and output:

It looks like your language would be good for the job if the name wasn't so long :)

if I was being serious I would probably just call it Formula which is how it is referred to in the Notes/Domino developer community :-)

@connectyourcharger: How strict is the requirement to introduce yourself with your full formal name in a dad joke?  Wouldn't Lotus Notes introduce itself with "I'm Lotus Notes"?  Some other answers are things like "I'm Perl 5 -p", as if the -p option was really part of the language name.  Easy to argue that Perl5 could introduce itself as "Perl".

@PeterCordes - Possible but Lotus Notes/Domino also has LotusScript as an inbuilt language so we probably need to be a little more specific ;-)

"Hi @ElPedro, I'm a Lotus Notes Formula"?

Could actually go a little better than that since IBM rebranded it to IBM Notes but then they rebranded again to IBM Domino so I guess that to be strictly correct it should be "Hi @PeterCordes, I'm IBM Domino Formula" :)

@PeterCordes Only the essential parts of the language name are required - I'm accepting Perl as a substitution for Perl 5 or Perl 5 -p.

But I think that in this case, the formal name should be used (there's no version numbers - the whole language name is what it should be referred to as).

I'm not even sure if this is the official name but it's the name that I use when I am posting answers so I'll stick with it here.  In the light of this question I maybe should have used a shorter name in the beginning :)

sed (-r), 31 28 25 bytes
-3 bytes thanks to Shaggy
-3 bytes because -r not needed in output
s/I'm(.*)/Hi\1, I'm sed!/

TIO

28 bytes?

Hmm ... Our way around counting flags was to declare them as different languages so I think you may need the -r but it would be worth getting Meta to weigh in on it.

i removed because of perl 5 answer and comments

TeX, 48 43 30 bytes
Yes I could save a byte by writing TeX instead of \TeX, but it seems a shame.
\def\s[#1]#2#3#4{}\def~[#1]{Hi\s[]#1, I'm \TeX!}

Update: saved 3 5 bytes thanks to fixed pattern matching.
\def\s[]I'm{}\def~[#1]{Hi\s[]#1, I'm \TeX!}

Update: -13 bytes (thanks, Jairo A. del Rio).
\def~I'm #1~{Hi #1, I'm \TeX!}

Test file
\def~I'm #1~{Hi #1, I'm \TeX!}
~I'm amazing~
~I'm hungry~
~I'm tired~
~I'm fat~
~I'm a programmer~
~I'm a question-writer~
~I'm a Stack-Overflow-er~
\bye

Output:

Try it online!

-12 bytes

Thanks for this! Unfortunately, it does not work for all the test cases, which can be either one or two words.

In such a case, -7 bytes (and yes, it includes an end-of-line dirty trick). You could make it -8, but it will consume the space after the command and it result in ugly spacing. -9 with TeX instead of \TEX

How about -12 bytes? The question says 'using standard input or through a function', so it's difficult to know what counts.

Wow, that's much better

-13 bytes if this syntax is allowed.

Japt, 18 bytes
`Hi{s3}, I'm Japt!

When Japt's string compression library achieves a 0% compress rate...
Try it
Another 18-byte alternative:
`Hi{Å¤}, {¯4}Japt!

... but still beats Jelly and 05AB1E :)

Octave, 35 bytes
@(s)["Hi" s(4:end) ", I'm Octave!"]

Try it online!
@(s)                                 % Anonymous function taking a string input
    [                             ]  % Concatenate everything inside the brackets
     "Hi"          ", I'm Octave!"]  % The fixed parts of the output string
          s(4:end)                   % The input, except "I'm"

                                     % Returns the concatenated string

42 bytes:
I tried retrieving "Octave" somehow, without writing it out, since 6 chars is quite a lot compared to some of the other language names here. Unfortunately, I could only find ver, which outputs a struct with comma separated fields. Takes way more than 6 bytes. :(
@(s)["Hi" s(4:end) ", I'm " {ver.Name}{1}]

Try it online!

Malbolge, 24477 bytes
Mors sum, Dominus Pestifer Mundi
Hi, Dominus Pestifer Mundi, I'm dad!
bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4`_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEa`YAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}`{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcba`B^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg`_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchg`edGba`_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}`^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}`{z]rwvutWrkpohmPkjihafI^cba`_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa`_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}`{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNiLgf_dcba`C^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPNdchKIeHFbaD_AWV[><X;9U86R53ON1L.DCH+)EDC&;@#>=<;|98x6wu32s0p(',mk)(i&f|{"ca}`^z][wZXtWUqTRnmPNjcbJJ_dcbEDYB@@?ZSX;VUTS6QPO11F..CHGF)(C<A$?>=<}:98xx/uu,10/po,+$kiih%$#z!b}|{z]xwvXXmUUjonmPOjihafIdcbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>=~|438yw5vt21r/o'&+lj(ig%fd"ca}`^z][wZXtWUqpoRQlkjihafIdcbaD_^]??T<<QVUT76QPONMLE.,,+FEDCBA@9>!<;:9zx0/uu,10/po,+*)('&}$e"!~}`{zy[[pXXmrqpSRmlkjihgf_Hcba`_AW\[ZY;Q:OTSRKPIN1//.CH+FEDC&A@?>=~|:327xv43tr0)(-nl*ki'hf$ec!b`|_]y\ZvYWsVTponQPejMhgfeHcbaCCX@@UZYX;:UN7554ONGL/JIHG*ED&BA$?!76;|zyy054us1*).om+lj(ig%fd"ca}`^z][wZXWWlqpoRQlkdiLgfedGba`BBW??TYXW:9TSRK4221LKJIBG*EDCB%@?>~~5{{2765vu210/(-n+*)(i&%$ddyaav{zy\[vutsrkTRRQlkjihg`eHcba`C^]\>>S;;PUTS65PONMLKDI,GFED'%;:?"~<}{9zx6wu3tr0qo-nl*ki'hfeez!~}`_zyxwvutmVTTSnmlkjihg`eHcba`C^]?>>SXW:8TMLQPO21LKJIHGFE>C&A@?>=}5:987w/v-210).',m*)('h%$#ccx``uzyx[ZoXVVUpinQlkjiLgfeGG\DDY^]\?>YRW:UTSR5PON00E--BGFE('BA:#!!~;:927x5432s0/.nn%kk"'&%fe"!~w|_zyxwZutsUUjRRglkjMLgfed]FDDC^]\[ZSX;VUTS6QPO11FKJ-H*@?D'%A$">!}||387xv4-,1rp.om+lj(ig%fd"ca}`^zyx[ZutsrqjoRmlkjMhgfHH]EEZ_^]@?ZYXWVUN7554ONMLKJIBG*EDCB%@?>~~5{{2765vu210/.-,%*k('&%f#"b~a_{^\x[YutWUqjinQOkNLhKIeHFbEC_B@\?=<<QVUT76QPONMLKJC,GFEDC%;@?>=}5|381654-2sqqp',m*)('h%$#ccx``uzyx[ZotWrqpoRmlkMMbJJ_dcbED_XA??>YXQV9TSRQ4ON0L/-IH+F(>=B%#?>!<|438yw5vt2sq/pn,mk)jh&%fd"yx``uzyx[ZutmrUponmPkjiKK`HH]ba`CB]\[T=;;:UTSRKP3NMLK.IHG))>&&;@?>!~;:9816w4321r/.-mm$jj!&%$ed!~}|{t][[ZutsrqpinQlkjiLgfeGG\DDY^]\?>YXWVUTMR5PONM0KJI++@((=BA@#"=<;:9870wuut10/.-,+*#(i&%$#d!~}__t\\qvutWVqponmlkjchKfedcbDZ_^]\>T=RWVUNSLQ4ONML/-CBG*(D'%A$">=~|:327xv43tr0)(-nl*ki'hf$ec!b`|_]\\qvutWVkTRRQlejMhgfeHcbD`_B]?UTY<:99NSR5P2HGL/-IH+F(>=B%#""7<;|9y105vt2sq/pn,mk)jh&%$ed!x}`{z]xwYuXVrUSoRPlkNLha`eHFbEC_B@??TYX;V8NMR53ON1L.DCH+)ED'B$:9>!};|z876wv32+r/.-n+*j(ig%$ec!xw|_]yx[YunmrUSonQOkdchKIeHFbEC_B@\?=Y<:99NSRQ43NMLKD-++*EDCBA:?"=<;|z21ww.321rq.-,+*#(i&%$e"!~``uzy\ZvonsrqTSnmlkjibKIIHcba`_^]V[>YXW:UTS55JON1L.DCH+)E(&BA$?!76;|z8ywvv-21r/o'&+lj(ig%fd"ca}`^z][ZZotsrUTonmlkjibgJedcFa`_^]@>ZSRW:877LQP31MFEJ-+GF)'C<;@#!=~|:{y76wu3,+0qo-nl*ki'hf$ecbbw|{z]\wvutsrqpiRmlkjiKafedcE[DY^]\UZSX;998MR5PON1LK-,,AFE(C%;:?"~<;|9y105vt2sq/pn,+l)i!~%fd"ca}`^z][wZXtsrUTinQlkNihgII^FF[`_^A@[T=XWV9TSR44INM0K-CBG*(D'%$$9>=~|:327xv4usrr).-nl*#"'hf$ec!b`|_]y\ZvYWsrqTSnmleNLLKfedc\aD_^]@[ZYXW:8TMLQ42NM0K-CBG*(DC&A#98=~|:9z7w/.3tr0/p-m%$)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedGbaC_^A\>TSX;9UT75QJIN1/KJ-+G@?D'%A@#!=65:{y7xv4us1rp.om+lj('&gf#"!~}v_]]\wvutsrkpSnmlOjihJJ_dcFaCYX]@>Z=;WV9T6LKP31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&%$#"!x}`{zy\ZpotWUTTinmPNjcbgJHdGEaDB^A?>>SXW:8TMLQ42N1/K.,H+)E(&%%:?>=~}:987654-trrq.-,+*)('~%f#"!b}|{]]rwvYWslkpSQPPejiLgI_^cFD`CA]@>Z=;::OTS6Q3IHM0.J-+G*(D'%A$">=<}|98765432+0q.-,+*j"'&%$dzcx}|uzyrwZutsrUponPPeMMbgfeHGbaZCAA@[ZYRW:UTSR5PONML/-IBAF)'C&$##8=<}{9216wu3tr0qo-nl*ki'hf$ec!b`__tyxwZYtsrkpSnmlkNihgII^cbE`BXW\?=Y<:VU8S5KJO20L/-I,*F)'C&$@#!=~|:9z7w/.321rq.-,+$kiih%$#"!x}`{zyx[vuWsVTSShmlOMibafIGFF[`_B@\UTY<:VU8S5KJO20L/-I,*F)'C&$@#!~~5:98yx54321*/p-,+*k('&ff{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QPON1LK-I,*FE(C%;:?"~}}498y6v.-2sq/pn,mk)jh&ge#db~a_^^sxwvYXmrUponmPkjLhKIHH]baDB^WV[><X;9U86R53O20L/-I,*FED'&A:#!!~;:38y65vt,+qq(-,+lk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<<QVU86RKJO20LKJ-,GFE>'%%$?>=<5:{87x54t21r/o'&+lj('h%e{z!b`|{^\xqpuXVrUSoRPlOMiLJfIGcFDCCX]\[>=XWVUNS6443NMLKJC,GFE(CB$@#!=~|{{276w4t,+0qo-nl*)j'g}|#db~a_{^\xwZuWmlqpoRQlkjihaJHHGba`_^]V[>YXW:UTSRQ42NGFK.,HG*E'=<A$">!};:{y70/4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmlejMhgJedcEEZ_^A\>TSX;9UT7R4JIN1/KJ-H*@?D'%$$9>=~;{327xv4us1rp.om+lj(ig%fd"!~a`{zyxwvunWUUTonmlkjihafIdcbE`_A]\?=YRQV9766KPO2M/EDI,*F)'C&$@#!=~|:{y7xv4usrr).-,ml)('&%$#"y~a|{zyxZputsrTjShmlkdibgJedcbE`_^@@U==RWVU87L5332MFK.IHGF)DC%A$">=~;{327xv4us10q.n&%*ki'hf$ec!b`|_]y\ZvutWVqjoRmlkjMhgIHH]baDB^WV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<}{987xw43,sqqp-,+$)j'&%f#"!aav{z]xZpotWUqTRnmPkMcbgJHdGEaDB^A?[><X;9U86R5322GLKJ-,GFE>C&A@#>=<;:{y70/4us10qo-&%*ki'hf$ec!~a|^tsx[YuXVUUjonQOkdchgfIHcba`YB]\[>YX:99NSR5P2HGL/-IH+)E>=B%#?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{t][[ZutsrqpohmPkjiLgfHdGEa`C^@VUZ=;WV9T6LKP31ML/J,BAF)'C&$@#!=~|:{y7xvuu,10/po,+*)('&}$e"!~a|{zyx[YunmrUSoRPlkNLha`eHFbaDB^WV[><XW:8TMLQ42N1/K.,H+)E(&B%#?>=~}:9876543,s0/.-,l$)('&f|ez!~w|{ty\ZZYnsVqpoRmlkMMbgfIdF\[`CA]@>ZY<W9ONS64P3100EJI,G)?>C&$@#!=~|:{y7xv4usrr).-,ml#(i&%$e"!a}`^z][wZXtWUqpSQmfejMKgJHdGEaDB^A?>>SXWV98SL5332MLEJ-HGF)DCBA@#!=65:{y7xv4us1rp.om+*k(h~}$ec!b`|_]y\ZvYWsrqTSnmfkNLLKfed]Fa`_B]\>ZY<:VONS64P31M0.J-+G*(D'%A$">!};|zyy0543ts0/.'nllk('&%|#d!~}`{zy[[putWrTjinQONNchgJeG]\aDBAAV[Z=;WPOT75Q42N1/KJ-H*@?D'%A$">!};:{8x0/432sr/.-,%*kiih%$#"!xa|{z]xwvutWUqjinQOkNLKK`edGEaZY^A?[Z=X:POT7544INM0K-CBG*(DC&A#98=~|:{y7xv4usrr).-,ml)('&%|eccb}|{zyxqvYtsrUpoQmPNMMbgfIGc\[`CA@@UZY<W9ONS64P31M0.--BGF)'C<;@#!=~|:{y7xv4us10/po,+*)('~%fddc~}|{zyxqZutsVqpRnmPkMcbgJHdGEa`C^@VUZ=;WV9T6LKP31M0.J-+G*(D'%A$"!!6;:9zy6543210)pnnm*)('&%$#z!b}|{^yxZvuXsUkjoRPlkNiKa`eHFbECBBW\[><XQPU86RQ4O1GFK.,H+)E(&B%#""7<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrqTonPlkNiKa`eHFbEC_B@\?=Y<:V97S64P31M0.--BGFE('<%##"=6;|987x54t2sq/pn,mk)(ig%|{"ca}|_z\rqvYWsVTSShmlOMibafIGcFD`CA]@>Z=;WVU87RKP3NML/JI+GF)D&<;@#!=~|:9z7w/.3tr0qo-nl*ki'hf$ec!b`|{z]\wvoXVVUponglOjiLgfHdcFaCYX]@>Z=;WV9T6LKP31M0.J-+G*(D'%A$">!};:9zy654-2s0/p-,+kk"'&g$dzy~}|_^yxwvoXVVUponmlejMhgfIG]\aDB^A?[><XW:U7MLQ42N1/..CHG*E'=<A$">!};|z8yw5vt210qp-,+*)"'h%$#d!~`|{^\xqpuXVrUSoRPlkNLha`eHFbaDB^WV[><XW:U7MLQ42N1/K.,H+)E(&BA@#"=<;:981xvvu210/.-,%*k('h%$d"!b}_uty\ZvYWsrUpRhglOMLLafeHcE[Z_B@??TYX;V8NMR53O20LK.I+A@E(&B%#?>!<|43876wv3210/.-&+l)('hf|{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QP3NMLKJ-+G@?D'%A$">=~;{327xvuu,10qo-&%*ki'hf$ec!~a|^tsx[YXXmrqTRngfkNLKK`edGEaZY^]\?>SX;998SRKP3NM0.DC++@EDC&%@?8=~;:9z765uu,10qo-&%*)(ih%$#zcaa`{zyxqvYtsVTjinQOkjMhJ`_dGEa`C^@VUZ=;W:8T75Q42N1/KJ-H*@?D'%A$"!!6;:{8x0/4us10/po,+*)"'h%$#dbxw__tyxwZYtsrqpiRPPOjihgfe^cFa`C^]\[Z=;WPOT75QP3N0FEJ-+**?DC&$@98=~|:{y7xv4us1rp.-n+k#"'hf$ecbbw|{^\xqpuXVUUjonmPOjihgfe^cFDDC^]\[ZYXWPU8SR53IH00EJIH+*EDCBA@?>7<}:9876v.3210p(o&+$)('~%f#"c~}|^^sxwZXtmlqTRnQONNchgJeG]\aDB^]@[=SRW:877LQP31MFEJ-+G*(D'%A$">!};|zyy0543ts*q.-nl$#ii~%$#dc~}v_]]\wvunsVqpSnmlNNchgJHd]\a`_BA\[ZSX;998SRQPOHM0KJ-+A@((=BA@#"=<;:927x54u210pp',+lj(!~%$#dc~}|{zyr[vuXVlkSShmlkNMhgfedcbaZC^]\[Z<RWVUT6L5JONMFKDI,**)>C&A@#!76;|z8yw54u2r*).om+lj(ig%fd"ca}`^z][wZXtsrUTinQOONibKfedGE[Z_B@\?=Y<:99NSR5P2HGL/-IH+F(>=B%#?>!<|438yw5vt2sq/pnmm$)('hg${dbba|{ty\wvYtsrqpSQmfeMMbgfeHGbaZ_B]\[>YX:VU86RKJO20L/-I,*FE(&B;:?"~<;|z8105vt21r/o'&+lj(ig%fd"ca}`^zyx[ZutslUSSRmlkjchKfedGE[ZBBW\[Z=<WVUTSL5332MLKJIHAF)DCB%@?!=~|:{y7xv4us10qo-&%*ki'&g$dzy~a_{^\x[YuXVrUSonmPOjihgfe^cFa`C^]\>>SXW:U7MLQPO21LKJIHGF?(&&%@?>=<;:927x543tr*).om+lj(ig%$e"bxw|_]y\ZvYWsVTpSQmPNjMKgfeHGba`_^]\[TY<WVUTS5KPONM/E.CHGF?D=B%@?"=<;:9zx6/.3tr0/pn,%$)jh&ge#db~}`{]srwZXtWUqpoRQfOMMLg`eHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A$">!}||387xv4-,1rp.-,ml)"'h%$e"!a}|_z\rqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S64P3100EJIH+*ED=&$$#>=<5:{876wu-,1rp.-n+k#"'hf$ec!~a_{tsx[YuXVrUSoRPlOMiLJfIGFF[`_^A@[ZYRW:UTS6QPONM0.JCBG*(DC&A#98=~|:{y7xv4us1rp.om+lj(ig%fd"!~a`{zyxqZXXWrqponglOjiLgfeGG\a`C^@VUZ=;WV9T6LKP31ML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hf$#"cb}|{zyrwZutsVqpRnQOkjMhJ`_dGEa`C^@VUZ=;W:8T75Q42N1/K.,H+)EDC&%@?>=<;4{yyx543210/(-n+*k('&%$ec!xw|_]yx[YunmrUSoRPlOMihKfH^]bEC_B@\[Z=<WVUTSRQJO2ML/-CBG*(D'%A$">!};|zyy054u2r*).om+lj(igff{"!b`|uty\ZvutWVqponmlkjcLgfedcE[`_^]?U>SXWPUTMR5332GL/JI,GF(DC&A#98=~|:9z7w/.3tr0/pn,%$)jh&ge#db~a_{^\x[YuXVUUjonmPOdiLJJId]Fa`_B]\>ZY<:VONS64P31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&}fddc~}v{^yxwZutVUUjonQlNdchKIHH]baDB^WV[><XW:8TMLQ42NM0.JCBG*(D'%A$">!};|z8yw543ts0/(-n+*k('&ff{"!b}_uty\ZvuXsUkjoRPlkNiKa`eHFEEZ_^A\>TSX;9U86R53O20L/-I,*F)'CBA$#>=<5|zzy6543,1r/.-n+*)ii~%$e"bxw|_]yx[vXnmrUSRRglkNiKa`eHFbECBBW\[>Y;QPU86R53O20L/-I,*F)'&&;@?>!~;:9816w43t10/.-nl*#"'hf$#db~wv{^\x[YuXVrqToQgfkNLhKIedcFE`_^]\U><<;VUTSRQJO2ML/-CBG*(D'%A$">!};|zyy054u2r*).om+lj(igff{"!b`|uty\ZvutWVqponmlejMhgJedFbaD_AWV[><XW:U7MLQ42NM0.JCBG*(D'%A$">!};|z8yw5vtss*/.-nm*)('&%${dbba|{zyxwvunsVqpoRPfejMKgfIdF\[`CA]\?Z<RQV97S64P31M0.J-+G*(D'%A$"!!6;:9zy6543210/(-n+*)('g}$#"!aw`uzyxqvotWrqTonPlkNiKa`eHFbEC_^A\>TSX;9U86R53O20L/-I,*F)'CBA$#8!<;|z21ww.321rq.-&mkkj'&%|#d!~}`{zy[[putWUqjinQOkNLhgJeG]\aDB^A?[><X;9U86R53O20L/-,,AFED'&A@?8=~;:{y105vt2sq/.o,l$#(ig%fd"ca}`^z][wZXtWUqTRnmlONihgf_HFFE`_^]\UZ=XWV97MLQ42N1/KJ-+G@?D'%$$9>=~;{327xvuu,10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmfkNihgfIdcbDDYAAV[ZY<;VUTSRQPOH1LKJIH*@EDCB$:#8=<;4927xvvu,1r/.-,m*)i'hf$ec!~a|^tsx[YuXVrqToQgfkNLhKIeHFbEC_B@\?=Y<:VUT76KP3NMLK.IH*FE(C%;:?"~<}{98yw5.-2sq/pn,mk)jh&ge#db~a_{zy\[voXsrqpSnmlNNcKK`edcFE`_^W@>>=XWVUNS6QPON1/EDI,*F)'&&;@?"=}549zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedcFa`B^A?>>SXW:8TMLQ42N1/K.,H+)E(&B%#?"~<;:{z76543,sqqp-,+*)(!&g$#d!~}|{^\xqpuXVrqTRngfkNLhKIeHFbaD_AWV[><X;988MRQ42NGFKJI,+FEDCBA:?"~~}:9876543,1r/.-n+*j(igff{"!b}_uty\ZvYWsrUpRhglOMiLJfeHcE[Z_B@\?=Y<:V97S64PON10KJIHGFED=B%@?>=<|49876v.u,10).-&+l)('h%$d"ca}|_]yrqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S6433HMLK.-B+))(C<A$?>=~;:987xv4-,1rp.omll#('h%e{z!b`|_]yx[vXnmrUSonQlNdchKIeHFbEC_B@??TYXW:9TMR5PO2ML.JI,*F?>C&$@#!=~|:{y7xv4us1rp.om+ljii~%$#dc~}v_]]\wvunsVqponQlkMiLJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&$@?>!~;:927xvvu210/.',m*)('h%$d"ca``uzy\ZvonsVTSShmlOjLbafIGcFD`CA]@>Z=;W:8T75QPO21LKJIHAF)''&A@?>=<;49z76w432rr).-n+k#"'hf$#d!awv{^\x[YutWrTjinQONNchgJeG]\aDBAAV[Z=X:POT75Q42NM0K-CBG*(''<A@?"!<;:9876/4u210/.n&+*)(h~g|#"!x}v{^yxwvYtsUqTRnQOkjMKg`_dGEaDB^A?[><X;9U86R5322GLKJ-,AF)DC&A@">!};|z8ywvv-21rp.'&+lj('hf${z!b`|_]y\ZvYWsVTSShmlkNMhg`eHFFE`_^]V[>YXWV9TS5Q42N1/..CHG*E'=<A$">!};|z8yw5vt2sq/pn,+*kj'&%${"caa`{zyxwvotWrqTonPlOMiLJfIGcFD`_B]?UTY<:VU8S5KJO20L/-I,*F)'C&$##8=<}:z216wu321rq.-,+*)"'hffe"!~}|{zyrwZutWrqponQOkdchKIeHFbEC_^A\>TSX;988MRQ42NGFK.,H+)E(&B%#?"~<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrUponmlOMibafIGcFD`CA]\?Z<RQV97S6433HML/J,BAF)'CBA$#>7<}{{z765.3t10q.-m+lj('h%e{z!b`|{^y[qpuXVrUSRRglkNiKa`eHFEEZ_^A?[TSX;9U86R53O20L/-IHG*)DCB;@#>=~;:z8yw5vt2sq/pn,mk)(ig%|{"ca}`^z][wZXtWUTTinmlONihgfe^cFa`C^]?[><;;PUT7R4JIN1/K.,H+)E(&B%#?"~<}{9zx654ut10/.-,+$)j'&%$#cy~}|{]s\qputsrkpSQQPejMhgJedcEEZ_^A?[TSX;988MRQ42NGFK.,HG*E'=<A$">!};|z87x5u-,1rp.om+lj(ig%$#dcx}`^^]xwpuXsrUpoQmlOjLbafIGcbE`BXW\?=Y<:V97S64P31M0.J-+G*(DCB%$?>7<}{{z7654-2s0/.-n+*j('h%e{z!b`__tyx[vXnmrUSoRPlOMiLJfIGcFD`CA]@>==RWVU87RQPOHM0KJIH+FE'C&$##8=<}{9216wu3tr0qo-nl*ki'hf$ec!b`|_]yxwZYtsrqpohmPkjMKa`eHFbaDB^WV[><XW:8TMLQ42N1/K.,++@ED'B$:9>!}||387xv4-,1rpoo&+*ki'~}$#"cb}|{zyxwpYWWVqponmlkjchKfeHcbaCCX]\?Z<RQVUT76QPONMLKJCH+FEDCB$:?>=<|4{2765.3,1rppo&m*)(ig}|#db~a_{^\xwZuWmlqTRnQOkNLKK`edcFEZCAA@[TY<WVU8SR4P31ML/-IBAF)'&&;@?"~<549zx65vt2+*/pnmm$)(i&f|{"ca}`^z][wZXtWUqpoRQlejMKKJed]Fa`_B]\[ZY<:VONS64P31M0.--BGF)D&<;@#!=<}:z216wu32s0p(',mk)jh&ge#dbaav{zy\[vunWUUTonmfkNihgJedFbEC_B@\?=<<QVU86RKJO20LK.,HA@E(&BA$?!76;|z8yw5vt2sq/pn,+*kj'&%|#dbba|{zyr[vutWrqpRRglkNiKa`eHFbEC_^A\>TSX;9U8655JON1L.DCH+)E(&B%#?"~<}{9zxww.321rq.-,+$kiih%$#"!x}`{zy\wvXtsVTpihmPNjiLgI_^cFD`CA]@>Z=;::OTS64PIHM0.J-+G*(D'%A@#>~65:{yxx/432sr/.-,+$)jhhg$#"!~}v_zyx[vutVVkpoRmOediLJfeHcE[Z_B@\?=Y<:V9766KPO2M/EDI,*F)'C&$@#!=<}{921654ut10/.-,%ljji&%$#"!~w|_zyx[vuWsrUSohglOMiLJfIGcFD`CA]@>Z=;W:8T7544INML/.IHGFEDC<A$?>=~|438yw54u2r*).om+lj('h%e{z!b`|_]\\qvuXVrkjoRPlOMiLJfIGcFDCCX]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>=6;49zxxw.3t10/p-,l*)jh&}|#db~a_{z][wpotWUqTRQQfkjMhJ`_dGEaDB^A?[><X;9UTS65JO2MLK.IH*F)'&&;@?"~<549zxww.32s0p(',mk)jh&geddy~}`^zsrwZXtWUqTRnQOkNLhgfIHc\ECCB]\UZ=XWV9TS5Q42N1/KJ-H*@?D'%A$">=~;{327xvuu,10qo-&%kk"'&%fe"!x}`{zy\wvXtWUqpSnPfejMKgJHdGEDDY^]@[=SRW:8T75Q42N1/..CHGF)(CBA:#!!~;:9816w432s0/o-,m*j"!&ge#db~a_{^\x[YuXVrUSoRPlOMLLafedGFa`_^W\?ZYX;VU7S64P3100EJI,*F?>C&$@#!=~|{{276wu3,+0qo-nl*ki'hf$ec!~}`_zyxwvoXVVUponmlkdiLgfeHF\[`CA]@>Z=;WV9T6LKP3100EJI,G)?>C&$@#!=~|:{y7xv4us10/po,+*)('~%f#"!b`vuz][wvYtVlkpSQmPNjMKgfIGc\[`CA]@>Z=;W:8T75Q4211FKJI,+FEDCBA@9"~~}:9876543,1r/.-n+*)ii~%$ec!xw|_]yx[vXnmrUSRRglkNiKa`eHFbaD_AWV[><X;9U86R53O20L/-I,*FED'&A@?>=<;:38y65432r*/.-,l$k"'&}$#z!b}|{^yxwYYnsrUpRhglOMiLJfIGcbE`BXW\?=Y<:V97S64P31M0.J-+**?DCB%$9"~~}:38y654u21q/.om+$#(ig%fd"ca}`^z][wZXtWUqTRnQONNchgfIHc\aD_^]@[Z<X;988MRQ42NGFK.,++@ED'%A:9>!};|z87x5u-,1rp.om+lj(igff{"!~a`{zs\ZZYtsrkpSnmlOjihJJ_dcFD`YX]@>ZY<:VONS6433HML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hfeez!~}`_zyxqvYtsrUpoQPPejiLgI_^cFD`_B]?UTY<:V9766KPO2M/EDI,*))>CB%@"87<}{9zx6wu3tr0/p-m%$)('hg$#"!xa__^yxwvunsVqpoRmlNjiLgI_^cFDCCX]\?=YRQV9766KPO20LEDI,*FE(&B;:?"~<}{9zx6wu3trqq(-,mk)"!&%$ed!~}|{ty\wvuXsrTpSQmlOjLbafIGcbE`BXW\?=YX;V8NMR5322GLK.I+A@E(&B%#?"~<}{98yw5.-210qp-,+*)(!hffe"!~}|{zsx[vutWrqSonQlNdchKIeHFbEC_B@\?=Y<:V97S64P3100EJIH+*EDCBA@?8=~;:9z76v4us1rp.-nl*#"'hf$ec!b`|{^\xqpuXVUUjonQOkdchKIeHFbEC_^A\>TSX;9U8655JONM0/JIHGFEDC<%@?>=<|49876v.u,10/(-&+ljji~%f#"!b}|^]]rwvYtVlkpSQmPNjMKgfIdF\[`CA@@UZY<W9ONS64P31M0.--BGFE('<A$?>=~;:9yy054us1*).om+lj('hf${z!b`|_]\\qvuXVrkjoRPlOMiLJfIGcFD`CA@@UZYX;:UN7554ONGL/JIH+FE'C&$@?"=}549zxww.32sq/(',mk)jh&ge#db~a_{^\[[putsVUpohmPkjiLgfHdcFaCYX]@>Z=;WV97SLKP3100EJI,G)?>C&$@#!=~|:{y7xv4us1rp.-,ml)('~geed!~}|uz]xwZutsrqTRngfkNLhgJHd]\aDB^A?[><XW:U7MLQ42N1/KJI,+FEDC<A$?>!}549zx6wu3tr0qo-nlkk"'&g$dzy~a_{^\x[YXXmrqTRngfkNLhgfIHcba`_XA??>YXWVUTMR5PON1LK-I,*F)'C&$@?"=}549zx65vt2+*/pn,mk)(i&f|{"ca}`^z][wZXtWUTTinmlONihgfed]bE`_B]\[==RWV9T6LKPON10KJIHGFE>'%%$?>=<;:9816w432s0/o-,mk)"!&ge#db~a_{z][wpotWUqTRnQOkNLhKIeHFba`CB]\[ZYXWVOT7RQPON0FKJIH*@)>CBA:?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLaJHHGb[`C^]@>TSX;9U86R53O20L/-,,AFE(C%;:?"~<}{9zxww.32sq/(',mk)('hg${"caa`{zs\wvuXsrTSShmlOjLbafIGcFD`CA]\?Z<RQV97S64P31M0.J-+G*(''<A@?"!<;4{yyx543,1r/.o,+*jj!&%f#cyx}|{^]xwvotWrqpSnmOkNLhKIHH]baD_AWV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<;:{z7654-trrq.-,+*#(i&%f#"!~}`^zsrwZXtsVTpihmPNjMKgJHdcFaCYX]@>Z=;WVU87RQPONGL/JI,*@?D'%A$">!};|z8ywvv-21r/o'&+lj(ig%fdccx}|_]yrqvYWsrqTSnmlkjibKIIHcba`_^]V[>YXW:UT6R53O20LK.,HA@E(&%%:?>!<|438yw5vt2sq/pn,mk)jhgg|#"!ba|{zyxwvotWrqTonmOOdihKfH^]ba`CB]\[ZYXWVO8SRQPO1GLKJI+A*?DC<A@9>!}}|38y654u210pp',+l)i!~%fd"!b}_uty\ZvYWsVTpSQmPNjMKgJHdGEaDBAAV[ZY<;PU8SRQP3NM/KJ-H*@?D'%A$">!};|z8yw5vt2sq/pnmm$)('hg$#"yb``_zyxwpuXsrqpSnmOkjMKg`_dGEaDBAAV[Z=;WPOT7544INM0K-CBG*(D'%A$">!};|z8yw5vtss*/.-nm*)('~%f#"!~a|{]yx[vXnmrUSoRPlkNLha`eHFbEC_B@\?=Y<:V97S64PON10KJIHG@)DCBA$?>=}}4zz1654ut10/.-,+$kiih%$#"!~}|uz]xwvuXVlkpSQmPNMMbgfIdF\[`CA@@UZY<W9ONS64P31M0.J-+G*(D'%A$"!!6;:9zy6543210/(-n+*)('g}$#"!aw`uzyxqvotWrqpoRmlNjMKJJ_dcFD`YX]@>Z=;W:8T75Q42N1/K.,HGF)(=&$$#>7<}:9z76543tr0)(-nl*)jh&}|#db~a_{^\xwZuWmlqTRnQOkjiLKf_dGbaDBXW\?=Y<:V97S64P3100EJI,G)?>C&$@#!=~|{{276wu3,+0qo-,+lk('~geed!~}v{^yx[vutVVkSShmlkNMhgf_dGbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>!<;:98yw5.-2sq/.om+$#(ig%$e"bxw|_]y\ZvuXVrkjoRPlOMiLJfIGcFD`CA]\[>=XWVUTMR5332MLKJIHA*(('BA@?>=<5:{876wu-,rr).-,ml)('&%$#z!b``_zyxwvutslUponQlkMiLJfeHcE[Z_B@\?=<<QVU8S5KJO20L/-I,*F)'C&$@#!~~5:98yx543210/.'n+*)('g}$#"!aw`uzyxqvotWUUTinQlkNihgII^cbE`BXW\[Z=<QV9776QJ3NML/-CBG*(''<A@#>~65:{y7xv4us1rp.om+lj(ig%fd"ca``uzyx[ZunWUUTonglOjiLgfedcFD`YX]@>ZY<:VONS64P31M0.JI,G)?>C&$@#!=<;|{8705v32sq)(-nl*ki'hf$ec!b`__tyx[vXnmrUSoRPlOMLLafeHFb[Z_B@\[Z=<WVUN7554ONMLEJ-HGF)DCBA@#!=65:{y76wu3,+0qo-,m*j"!&ge#db~}`^zsrwZXtWUqTRnQOkNLhKIedcFE`_^]V[><<;VUTSRK4ON1LKJ,HG*)DCBA@9"~~}:98765.3t10/pn&%kk"'&%fe"!~}|{ty\wvuXsrTpSQmPNjiLgI_^cFD`_B]?UTY<:VU86RKJO20L/-I,*F)'C&$##8=<;|{8765432+rppo,+*)('&%|#d!~a|{z\\qvuXsUkjonmPOjihgfedc\aD_^]\[=SXWVU7M6KPINMLEJ-++*?(CBA$?>~<}{9zx6wu32s0p(',mk)jh&ge#"c~`vuz][wZXtWUqTRnmPkMcbgJHGG\a`_BAV?==<WPU8SR5PONML/-IBAF)'CB%#?87<}{9zx6wu32s0p(',mk)jh&%$ed!x}`{z][qpuXVrUSoRPlOMiLJII^cbE`BXW\?=Y<:V9766KPO20LEDI,*FED'&A@9"~~}:9816w432sq)(-nl*)jh&}|#db~a_{^\x[YuXVrUSoRPlOMiLJfedGFa`_X]@[Z=XWV88MRQ4O1GFKJI,+FEDC<%##"=<;:927x543tr*).om+lj(ig%fd"!b`|uty\ZvYWsVTpSQmPNjMKgfeHGba`_^W\?ZYX;9ONS64P31ML/J,BAF)'C&$@#!=~|:{y7xv4us1rp.-,ml)('&%${dbba|{zyxwvotWrqTonmlkNLha`HH]ba`CB]\[ZYXWPU8SRQ4ON0//DIH+F(>=B%#?"~<}{98y6v.-2sq/pn,+lj(!~%fd"ca}`^z][wZXtsrUTonmlkjihaJedcbaCY^]\[=S<QVUTMRKP3110EJ-HG*EDC%%:?>!<|43876wv-2sqqp-&m*)(ig}|#db~}`{]srwZXtWUqTRnQOkjMhJ`_dGEaDB^A?[><XW:U7MLQPO21LE.,,+FE>C&A@#>=<;:{y70/4us10qo-&%*ki'hf$ec!~a|^tsx[YuXVrqpSRmlejMhgJH^]bEC_B@\?=Y<:V9766KPO2M/EDI,*F)'C&$##8=<}{9216wu321rq.-,%ljji&%$#z!b}|{^yxwvuXVrkjoRPlkNLha`eHFbaD_AWV[><X;9UT75QJIN1/K.,H+)E(&B%#?"~<;:{z7654-2sqqp-,+*)"iggf#"!~}|uz]xwvYWmlTTinmlONihgfed]bE`_^A\[=<<QVU8S5KJO20L/-I,*F)'C&$@?"=}549zx65v3s+*/pn,+l)i!~%fd"!~a`{zyxwvunWUUTonmlkjihafIdcFa`_AAV[Z=X:POTSR54ONMLKJIHAF)DCBA@"8=<;:z2y0543,1*/pnnm$k('&g$#c!b`|_]y\ZvYWsrUpRhglOMihKfH^]bEC_B@\?=Y<:VU8S5KJO20//DIHG*)>'%%$?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLg`eHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A$">!}||387xv4-,1rp.-,ml)(!hffe"!~w|_zyx[vutsrUSohglOMihKfH^]bEC_B@\?=<<QVU86RKJO20L/-I,*F)'C&$@#!=<;|{876/4u210q.-m+*k(h~}$ec!b`|{^y[qpuXVrUSonQOkdchKIeHFbEC_B@\?=<<QVUT76QPONG0..-HGFED=B%@?"=<;{{276w4t,+0/.on+*)('~%f#"!b}|^]]rwvYWslkpSQmPNjMKgJHdcFaCYX]@>Z=;W:8T75QP31MFEJIH+*EDCBA@9"~~}:987654-2s0/.o,+*jj!&%f#cyx}`^]]rwvYtVlkpSQmPNjMKgfIdF\[`CA@@UZY<W9ONS64P31M0.J-+**?DCB%$?>=<;:927x543t10p.om+lj(igff{"!b`|uty\ZYYnsrUSohglOMiLJfIGcFD`CA]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>7<;49zxxw.3t10q.-,ll#ii~%$#dcx}`{zy\wvXtWUqTRnQOkNLhKIeHFbECBBW\[><XQPU86R53O20LK.I+A@E(&BA$?!76;|z876wv3,sqqp-,%*k('&g$#c!b`__tyx[vXnmrUSRRglkNLha`eHFEEZ_^A?[TSX;988MRQ4O1GFK.,H+)E(&B%#?"~<;:{z76/4u21rp.-,+*kj'&%|eccb}|{zsx[vutWUkjRRglkjMLgfed]bE`_B]\[ZY<:VONS64PO20LEDI,*F)'C&$@?"=}549zx6wutt+0/pn,%$)('hg$#"!~w`^^]xwvutslqTonQOejihgJIdcba`_X]@[Z=;QP88MRQP32MLKJIHG@)''&A@?>=<;:38y654u210pp',+lj(!~%fd"ca}|_z\rqvYWVVkpoRmOediLJfIGFF[`_B@\UTY<:V97S64P31M0.--BGFE('BA@?>=<;49z76543s+0/.-m%l#('&}${"c~}`^tsx[YutWrTjinQOkNLKK`edGbDZY^A?[><X;9U86R53O20L/-IHG*)>'%%$?8=~;:9z76v43t1q)(-nl*)j'g}|#db~a_{z]xZpotWUTTinmPkMcbgJHdGEa`C^@VUZYX;:UNS6QP3NMLKJ-+G@?D'%A@#!=65:{y7xv4us10q.n&%*ki'hf$#"cb}|u^\\[vutmrUpoRPfejMKgJHdGEaDB^A?>>SXW:U7MLQ42N1/K.,++@ED'%A:9>!};:9zy654-2s0/.o,+*)(ig%|{"ca}|_]yrqvYWsrUpRhglOMiLJfeHFb[Z_B@\?=Y<:V97S64P31MLK.-HGFE>'BA$">=<;:{z76543,1r/.-nl$#ii~%$#dc~}|{zyr[YYXsrqponmfkNihgJedFbEC_^A?[TSX;9UT7R4JIN1/..CHG*E'=<A$">!};|z8yw5vt2sq/pn,+*kj'&%$#"!x}`{z]xwvXXmrqToQgfkjiLKfedcba`_XA\[ZYX:PUTSR4J3HMLKDIBG*(('<A$?>=~;:z87x5u-,1rp.om+*k(h~}$ec!~a|^tsx[YuXVrUSonQlNdchgfIH]bE`_B]\[ZY<:VONS64PO20LEDI,*F)'C&$@?"=}549zx6wu321rq.'nllk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<<QVU86RKJO20LKJ-,GF?D'BA@#>=<;:{y70/4us10qo-&%*ki'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_^]@?ZYXQ:UT75QPONM0/JIHG@E(CBA$"87}}4987xw43210)pnnm*)('&%|#d!~a|{]\\qvuXVrkjoRPlOMiLJfeHcE[Z_B@\?=<<QVU86RKJONM0/JIHGFE>C&$$#>=<;:981x54us+0/.-nm*)('&%${dbba|{zyxwvunsVqpSQgfNNchgfIHcba`_^]\UZ=XWVUT6LQPON0F/DIHAFE>C&A@?"=<|{{276w4t,+0qo-nlkk"'&g$dzy~a_{z]xZpotWUqpSnPfejMKgJHdGEaDB^]\?>S<::9TMR5PO20FEJ-+GF)D&<;@#!=~|{{276w4t,+0qo-nl*ki'hf$ec!b`|_]yxwZYtmrUSSRmleNihgJedFbEC_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<;|9y10vv-210qp-,%ljji&%${"c~}`{zyxwZXtmlqTRnmPNjcbgJHdGEaDB^]@[=SRW:8T75QPO21LKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hf$ec!b`__tyx[YunmrUSonmPOjihg`IGGFa`_^]V[>YXW:UTSRQ42NGFK.,HG*(D=<A$">=~;{327xv4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmfkNLLKfedcbaZCAA@[ZYXWVUNS6QPO20FE--BGFE('BA@?>=<5:{87x54tss*/.om+$#(ig%fd"ca}|_z\rqvYWsVTSShmlOMibafedGFa`_^]\[ZS<WVUTS5KPONM/E.CHGF?D=B%##"7<}:987x54t21r/o'&+lj(ig%$e"bxw|_]yxwZYnsVqpSQgfNNchgfIHc\ECCB]\UZ=XWV9TS5Q42N1/K.,HG*E'=<A$">=~;{327xv4us1rp.om+*)ji&%|#d!~a_uty\ZvuXsUkjoRPlOMLLafeHcE[Z_B@\?=Y<:V97S64P31M0.JIH+*EDC<%##"=<;:38y654u21q/pn,mk)(i&f|{"ca}|_z\rqvYWsVTpSQmPNjMKgfIdF\[CCX]\[>=XWVUNS6QPON1LK-I,*FE(&B;:?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{zs\ZZYtsrqponmfkNihgfIdcba`CA]VUZ=;W:877LQP31MFEJ-+**?DC&A#98=~|:{y7xv4us1rp.om+ljii~%$#dc~}|{zyxwpuXsrqpoQglkjiKaJ_dcb[`Y^A\[ZY<WV8TS6Q3IHM0.J-+GF)'C<;@#!=~|:{y7xv4us1rp.om+*)ji~g$#"!b}|{]]rZZotsrUTongPNNMhgf_dGba`_B@VUZ=;W:877LQP3N0FEJ-+**?DC&A#98=~|:{y7xv4us1rp.om+ljii~%$#dc~}|uz]xwvuXsrTpSQPPejiLJf_^cFD`CA]@>Z=;W:8T75Q42NML/.IHGF?(&&%@?>=<5:{87x54321rp.'&+lj('hf${z!b`|_]y\ZvuXsUkjoRPlOMihgJIdcba`Y^A\[><RQV97S64P31M0.J-+**?DC&A#98=~|:{y7xvuu,10qo-&%*ki'&%fe"!~}|{t][[ZutsrqpohmPkjMhgfHH]baD_AWV[ZY<;VUTSRQPIN1//.IHGFEDCB;$?>=~;:987xv4-,rr).-,ml)('&%$#"yb}|{zy[qvutsUkTinglkjchKIIH]bE`_B]\[ZY<:VON66KPON10EJ-HGF)DC%$$9>=~|:327xv43t1q)(-nl*ki'&ge#zy~a_{^\x[YuXVrUSoRPlkjMLg`IGGFa`Y^A\[>YXW9UT76QPIN1LKJ-+A@((=BA@#"=<;4{yyx5432+0q.-,m*)i'hf$ec!~a|^tsx[YutWrTjinQOkjMKg`_dGEaDB^A?[><X;988MRQP32MLKJCH+FE(CBA##8=<}:z21654ut10/.-&mkkj'&%$#"y~a|{z]xwYuXVrqTRngfkNLhKIHH]baDB^WV[><X;9UT7R4JIN1/K.,H+)E(&B%#?>=~}:98765.3t10q.-,+*ki'~}$ec!~a_{tsx[YuXVrUSonQlNdchKIeHFba`CB]\[ZYXWP9776QPONMLKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hf$ec!b`__tyx[YunmrUSonmPOjihgfedc\aD_^]\[=SXWVU7M6KPONGLEJ-HGF)DC%A$">=~;{327xv4us1rp.om+lj(ig%fd"ca``uzyx[ZoXVVUpinQlkNihgIedGFaZ_B]\[><RQ99NSRQ43NMF/--,GFE>C&A@?"=<|{{276w4t,+0qo-nl*ki'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFba`CB]\[TY<WV9TSR44INM0K-CBGFE('BA@?8!}}|98765.3t10/p-,l*)jh&}|#db~a_{^\[[putWUqjinQOkNLhgJeG]\aDB^A?[><X;9UT7R4JIN1/..CHGF)(CBA@?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLgfedcb[DBBA\[ZYXWVOT7RQ42HGL/-I,*F)'C&$@#!~~5:9z7w/.3tr0qo-nlkk"'&ge#zy~a_{zy\[vutsrqpinQlkNihJfIGFF[`_B@\UTY<:VU8S5KJO20LK.I+A@E(&B%#?"~<}{9zx6wu321rq.-,+*)('~g$#"!~`v{zyxZpYnsrqjohmPkjMKa`HH]ba`CB]V?==<WVOT7RQ42HGL/-I,*))>CB%@"87<}{98y6v.-2sq/.om+$#(ig%fd"ca}`^z][wZXWWlqpoRQlkdiLgfeHcbD`CA]@>Z=;::OTS6Q3IHM0.JI,G)?>C&$@#!=~|:{y76w4t,+0/.on+*)"i&%fd"!~}|_t]xwvutslqTonmPkjLKK`edGbDZY^A?>>SXW:U7MLQ42NM0K-CBG*(DC&A#98=~|{{2765v-2s0/.-n+*)ii~ff{"!~a`u^\\[votWrqpoRmlNMMbgfIGc\[`CA]\?Z<RQV97S64P31M0.J-+G*(D'%A$">!}||3876wv3,1r/.-,m*)i'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_B@\[Z=<WVO8SRQP3NML..C++@EDC&%@?>=6}{{z76543,1r/.-,mk#"'hf$ecbbw|{^y[qpuXVUUjonQlNdchKIeHFbEC_B@\?=Y<:V9766KPON10KJIHG@E(CBA@#>=};|zyy054us1*).om+lj(ig%fd"ca}`^z][wvuXWrqponmfOjiLJfedcbEZC^]\[ZYRW:UTS6QP2N1/KJ-H*@?D'%$$9>=~|:327xv4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWlqTonmlOjihJJ_GG\a`_BAV?==<WPU8SRQP3NM/..CHG*(D=<A$">=~;{327xv4us1rp.om+lj(ig%fd"ca}`^]]rwvuXWrkpSnmlkNihJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&$@#!=<;|{870w4321r/.-mm$jj!&%$ed!~}|u^\\[vutsrkpSnmlkNLbafIGcFDCCX]\?Z<RQV9766KPO2M/EDI,*F)'C&$@#!=~|:{y7xvuu,10/po,+*)(!&g$#"!b}|^z][ZZotsVTpihmPNjMKgJHdGEaDB^A?[><XWV98SRQPONG0KJ-+GFEDC&;$?>=<;:38y654u21qpp',+lj(!~%fdccx}|_z\rqvYWsVTpSQmPNjMKgJHdGEaDB^]@[=SRW:877LQPO2GL/JIHG*EDC%%:""7<;:{z1xvvu2+0q.-,+l)(hgg|#"ca}vuz][wvYtVlkpSQmPNjMKgJHdGEaDB^A?[><X;988MRQP32MFK.IHGF)DC%A@#>~65:{y7xv43tr0)(-nl*ki'hf$ec!b`|_]y\ZvutWVqpiRmlOMihgfeH]Fa`_^]\UZ=;W:UNSRQP3HM0KJIH+FE'CB%@"87<}{9zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRgPNNchKIIH]bE`_^]\?ZYX::O77LQPO21FK.IHG*(DCBA@#8!<;:98705v321r/.n,+l)i!~%fdccx}|_]yrqvYWsrUpRhglOMiLJfIGcFD`CA]\?Z<RQ99NSRQ4I2MLKJIH+dd'&s_@?"![|k9EUC54tPPq)(Ln%I)"h3g1B@y~>O;M\[87o#WE2pSh.?,=iu:s&Gc\"~~XjzUgfwd:ss7L533!1}KhIH+@d>P<$$?![6}X9yUCBvQ,1=Mo',I*6"iDVfA@.?`<_M\r8IHXV31So/.lkjvLt`H%F#!DC1|?>gSXuPb'6p4n2mGFEi-yTFcD=%_#"8J<}{Fyx05SRPPa/L-,lH)F43fCAc!aaOu;:xZpH533TCBQzlOMvKgfe$]"D!C^j/>-w+u)O'6%$J\mM}E{,fx@E'=<_$po!6lkjz7wvAR,1a/.^&l$#Yig}|d/yx}=NM:9w%u5m3D0|.@-ewcKgsI7G#n`BA0/.yxeWtb'6pK43lkkEW-,Gdcb&&r_pK7~5|W2UgTR-sba/_^Jl$6F!hV1TAcQP<;;9977uWmEDS0.gfxdv;gsHH6\!`B|0i.xYvvPU7&_5]2ll}ihgHfeRQC&A#^!!}|Y9iVCSuQQPN<L^JJHGFF&V$AcyQw_{t\\J6H5sU1}Bhg?+*L(aJ%dGF!32|j{zT<w*P8'S%oJm[0k.i,g*e(c&a$_"]~[|YzWxUvStQrOpM:JJljFF&V1{@RQ

Try it online!

What assembler did you use?

Jelly, 20 17 bytes
ṫ4;“'ṫṗḶ/÷!Ṗ»⁾Hi;

Try it online!
A monadic link taking the input as its argument and returning a Jelly string.
Explanation
ṫ4                | everything from 4th character on
  ;“'ṫṗḶ/÷!Ṗ»     | concatenate ", I’m Jelly!" to the end
             ⁾Hi; | concatenate "Hi" to the beginning

Hang on, Jelly has a built-in just for the word "Jelly"?

@connectyourcharger it’s a compressed dictionary word

Ah, that makes sense

Perl 6, 30 28 27 bytes
{S/.../Hi/~", I'm Perl 6!"}

Try it online!

JavaScript, 38 37 bytes
x=>`Hi${x.slice(3)}, I'm JavaScript!`

Try it online!

Rust, 41 bytes
|x:&str|print!("Hi{}, I'm Rust!",&x[3..])

Try it online!

VBA (Excel), 27 28 bytes
?"Hi"Mid([A1],4)", I'm VBA!

Input goes in cell A1 of the Active Sheet in Excel, run code in the Immediate Window
Takes advantage of the fact that "SomeString"SomeValue and SomeValue"SomeString" will implicitly concatenate, and that omitting the third argument from the MID function will take all characters from the end of the input - turning it into a "dump initial characters" function
(-1 byte thanks to Shaggy, but +1 when OP confirmed that all answers should end with an exclamation mark)
(-1 byte thanks to Taylor Scott reminding me that the final double-quote was optional)

Could you remove the space after Hi and replace 5 with 4?

@Shaggy ...  Yes, yes I could.  No idea how I missed that, thank you

You can drop a byte by removing the very last " from this solution, and as you use evaluate notation (the square brackets) you should mark this solution as being Excel VBA, as that notation is only available in Excel

Batch, 22 + 3 = 25 bytes
@echo Hi %*, %0 Batch!

+3 bytes for naming this file I'm (with the required .bat extension for Batch files). Invoke as I'm hungry, when it will echo Hi hungry, I'm Batch!.

program should receive I'm but here it's the name of the script don't know if it's valid, or unless it's the interpreter with the script in current path

@NahuelFouilleul The interpreter is CMD, so would that actually save me 2 bytes?

Jelly,  16  15 bytes
Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ»

A full program accepting a (Python formatted) string argument which prints the result.
Try it online!
How?
Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ» - Link: list of characters    e.g. "I'm a programmer"
Ḋ               - dequeue                          "'m a programmer"
  ⁾Hi           - pair of characters               "Hi"
 a              - logical AND (vectorises)         "Hi a programmer"
     “'ṫṗḶ/÷!Ṗ» - list of characters               ", I'm Jelly!"
                -  - since this is a new leading constant chain the previous result
                -    is implicitly printed (with no trailing newline)
                - program result is implicitly printed (again with no trailing newline)

Note: Ḋ⁾Hio... works too.

AWK, 28 25 bytes
$1="Hi",$0=$0", I'm AWK!"

Try it online!
This program modifies the contents of field "$1" and "$0" in a range pattern. Because no actions are specified after the pattern, the default action {print $0} is executed.

J, 22 bytes
', I''m J!',~'Hi',3}.]

Try it online!

05AB1E, 23 21 bytes
Saved 2 bytes thanks to Kevin Cruijssen
',«#À„Hiš"05AB1E!"ªðý

Try it online!
Explanation
',«                    # append ","
   #                   # split on spaces
    À                  # rotate left
     „Hiš              # prepend "Hi"
         "05AB1E!"ª    # append the language name
                   ðý  # join on spaces

21 bytes. And too bad the exclamation mark is there.. Since •äƵí•hR is 1 byte shorter than "05AB1E". :)

@KevinCruijssen: Wow! I feel stupid that I didn't start with the ",". Yeah I tried •äƵí•hR as well, but as you say, it unfortunately doesn't save any here.

Beat you by a byte.

bash, 24 bytes
echo Hi ${@:2}, $1 bash!

TIO

replace bash with $0 to save a couple of bytes

@roblogic, $0 would print script name or running bash -c 'echo Hi ${@:2}, $1 $0!' bash $@ but should count in size

Retina 0.8.2, 26 25 23 bytes
^...
Hi
$
, I'm Retina!

-1 byte thanks to @attinat.
-2 bytes by porting @Adám's QuadR answer, so make sure to upvote him!!
PS: @Neil posted a shorter Retina answer in the new version, so I've changed this answer to Retina 0.8.2 explicitly.
Try it online.
Explanation:
Replace the first three characters with "Hi":
^...
Hi

And then append a trailing ", I'm Retina!" (by replacing the end of the string):
$
, I'm Retina!

Shouldn't it be like this instead?

or better, 25 bytes

@attinat Ah, of course, hadn't even noticed the incorrect output.. >.> And thanks for the -1!

Javascript (Node.js in TIO), 60 bytes
s=>"Hi"+s.slice(3)+", I'm J"+process.argv[0].slice(6,15)+"!"

Try it online

javascript is shorter than "+process.argv[0].slice(5,15)+"

@NahuelFouilleul yes, but +process.argv[0].slice(5,15)+ is more fun ;-)

The consensus on language names is that we must use proper casing - JavaScript, not javascript.

@Shaggy, point taken.

QuadR, 22 bytes
^...
$
Hi
, I'm QuadR!

Try it online!
This replaces:
^... three initial characters
and
$ the end-of-line
with
Hi
and
,I'm QuadR
respectively

So you could exchange the middle two lines and change the language to Retina and still beat @KevinCruijssen's answer?

@Neil I guess so, but your's is still shorter. Tbf, QuadR is but a thin cover for the not-intended-for-golf ⎕R APL operator.

Ah, but my answer only works for Retina 1, not Retina 0.8.2 though.

Retina, 22 21 bytes
3L$`
Hi$', $` Retina!

Try it online! Link includes test cases. Does not work in Retina 0.8.2, so adapt @Adám's QuadR answer instead. Explanation: The pattern is empty, so it matches at every position in the input string. We only need the third (or fourth would work) match however. The substitution is then applied to that match. Within that substitution, $' refers to the rest of the string and $` refers the the beginning of the string.

VSL, 51 bytes
fn f(s:String){print("Hi "+s[from:4]+", I'm VSL!")}

Glad VSL can now participate in some golfs :)
Try it online! (doesn't have latest VSL so might not work just yet)

Are you doing much with Teascript these days? It was a cool project,..

@roblogic unfortunately not anymore. I ended up adding most of its better features (unicode shortcuts, compression) to Japt so now that's generally always the better choice

Ed, 30 bytes
I couldn't leave a sed answer without an ed answer!
%s/I'm\(.*\)/Hi\1, I'm ed!
wq

Try it online!

I prepended a “#” to your post's first line to turn it into heading, so the Leaderboard script be able to parse it and list it. Funny choice for the link, though I'm sure some readers would be happier with something more informative.

Thank you, manatwork. https://www.gnu.org/software/ed/ would be a reasonable place to go to learn more about ed.

Haskell, 34 bytes
f x="Hi"++drop 3x++", I'm Haskell"

Try it online!

The comma is required

Knight, 24 bytes
O++'Hi 'P", I'm Knight!"
Try it online!

The input is supposed to be in the form I'm <something>, not just the word. You have to do something like O++'Hi 'G=pP4Lp", I'm Knight!" instead.

@AidenChow You can use 3 instead of 4 and omit the space after Hi.

@Sʨɠɠan True! (filler)

Bash, 32 Bytes
read i;echo Hi${i:3}, I\'m Bash!

Try it online

Red, 39 bytes
func[s][rejoin["Hi"at s 4", I'm Red!"]]

Try it online!

I think Red[]rejoin["Hi"at read 4", I'm Red!"] is a valid 38-byte full program.

@Wezl  I think read expects exactly one argument - Reads from a file, URL, or other port, in your case it would be 4.

oh, but is there a shorter function that would work?

@Wezl Maybe ìnput, but it works only within the GUI console.

ok never mind, sorry.

@Wezl No problem!

Wolfram Language (Mathematica), 43 bytes
"Hi"<>#~StringDrop~3<>", I'm Mathematica!"&

Try it online!

Befunge-93, 45 bytes
"iH",,~~~>~# :1+#,_0"!39-egnufeB m'I ,">:#,_@

Try it online!
Dissected:

"iH",,                                           Push then output constant "Hi"
      ~~~                                        Read "I'm" from output, which gets unused
         >~# :1+#,_                              Non-wrapping cat program
                   0"!39-egnufeB m'I ,"          Push null-terminated constant string to stack
                                       >:#,_@    Output string and exit

C (gcc), 49 bytes
+3 Bytes: was not working
-3 Bytes: K&R style function.  thanks JohanduToit
This is similar to the answer from Neil A. but
takes the input as commandline arguments instead of a function parameter.
main(b,a)char**a;{printf("Hi%s, I'm C!",a[1]+3);}

Try it online!

PowerShell, 42 41 40 37 bytes
-1 byte thanks to Spitemaster
"Hi$($args|% s*g 3), I'm PowerShell!"

Try it online!
There might be a cheaper automatic variable holding the PowerShell version hiding somewhere but I'm not sure. Answer takes the substring after I'm to the end and builds a string with it.

You could save a byte by only skipping 3 characters and outputting "Hi$_\, I'm PowerShell!"`

@Spitemaster Oh yeah, I guess I could. Thanks

@Veskah You can output the working directory with $pshome but that prints something like /opt/microsoft/powershell/6

You could use the -f formatting operator for 33 bytes: Try it online!

@GabrielMills Breaks for multiple words

@Veskah ah, I hadn't caught that. Sorry!

T-SQL, 44 bytes
SELECT STUFF(v,1,3,'Hi')+', I''m SQL!'FROM t

Input is taken via pre-existing table t with text field v, per our IO standards.
STUFF is shorter than variations using SUBSTRING or RIGHT.
Can handle multiple inputs (as separate rows in t), although that's not required.

Canvas, 19 bytes
ｊｊｊHiŗ, I'm Canvas!

Try it here!
18 bytes only handling single letter names

SNOBOL4 (CSNOBOL4), 55 bytes
	INPUT "I'M" REM . X
	OUTPUT ="HI" X ", I'M SNOBOL"
END

Try it online!

53 bytes.

GFortran, 73 bytes
As usual, Fortran string handling is clunky and annoying!
try it online
character(99)S;read'(A)',S
print*,'Hi',trim(S(4:)),', I''m GFortran!'
end

PowerShell Core, 53 bytes
Filter f{$_-replace"(...)(.*)",'Hi$2, $1 PowerShell'}

Try it online!
Probably could do more improvement on the regex.  Oh well.

Sinclair ZX80 BASIC, 92 tokenized BASIC bytes
As the Sinclair ZX80 character set only allows for upper-case and 'inversed' characters, and doesn't include a single-quote, shifted-E is substituted here. There is no exclamation mark in the ZX80 character set either - Source.
 1 INPUT A$
 2 FOR I=0 TO 2
 3 LET A$=TL$(A$)
 4 NEXT I
 5 PRINT "HI";A$;","
 6 PRINT "I'M SINCLAIR ZX80 BASIC"

How it works:
Line 1 takes the input as a string value to A$;
Line 2 - 4 creates a loop to remove the first three characters of the entered value;
Line 5 - 6 then outputs the ultimate Dad joke.

Can you replace print with a question mark?

naz, 122 bytes
2a2x1v7a8m1o3d4m9a1o3d3s1o1x1f5r3x1v2e1o1f0x1x2f0a0x1f0m9a2a4m1o9s3s1o2m9a1o2d3a1o3m8s1o3d4s1o3m9a5a1o9s4s1o9a9a7a1o3d7s1o

Uses a lot of arithmetic instructions to set the register to each of the character values in the dad-joke format.
Works for any input file terminated with the control character STX (U+0002).
Explanation (with 0x instructions removed)
2a2x1v           # Set variable 1 equal to 2
7a8m1o           # Output "H"
3d4m9a1o         # Output "i"
3d3s1o           # Output a space
1x1f5r3x1v2e1o1f # Function 1
                 # Read the 5th byte of input, then remove it from the input
                 # This has the effect of skipping over the self-descriptor's "I'm "
                 # Jump to function 2 if the value of the byte is equal to variable 1
                 # Otherwise, output the byte and jump back to the start of function 1
1x2f0a           # Function 2
                 # Add 0 to the register
1f               # Call function 1
0m9a2a4m1o       # Output ","
9s3s1o           # Output a space
2m9a1o           # Output "I"
2d3a1o           # Output an apostrophe (')
3m8s1o           # Output "m"
3d4s1o           # Output a space
3m9a5a1o         # Output "n"
9s4s1o           # Output "a"
9a9a7a1o         # Output "z"
3d7s1o           # Output "!"

Pip, 21 bytes
["Hi"a@>3k"I'm Pip!"]

Try it online!
Explanation
Constructs a list containing:

Literal string "Hi"
The input, minus its first three characters (a@>3)
A string containing a comma and a space (which happens to be the initial value of the variable k)
Literal string "I'm Pip!"

By default, lists are concatenated together when they are output.
Alternately, we can reuse the I'm from the input for a different 21-byte solution:
["Hi"a@>3ka@<4"Pip!"]

Zsh -c, 21 bytes
<<<"Hi${1:3}, I'm $0"

Try it online! (includes wrapper script to run with -c)

Scala, 36 bytes
{case s"$a $b"=>s"Hi $b, $a Scala!"}

Try it online

JavaScript/Python (polyglot), 149 141 bytes
a=1//2;import sys
eval(["print('Hi'+sys.argv[1][3:]+', I\\'m Python!')","console.log('Hi'+process.argv[2].slice(3)+`, I'm JavaScript!`)"][a])

Example input (First arg)
I'm bored

JavaScript output (Try it Online!)
Hi bored, I'm JavaScript!

Python output (Try it Online!)
Hi bored, I'm Python!

Explanation

a=1//2;import sys:

What Python see: a=1//2= 0 (integer division/no-reminder), ;import sys
What JavaScript see: a=1 (the rest commented)

["print('Hi'+s[...]","console.log([...]"]: Array with the code in Python, and the code in JavaScript respectively.
[a]: Select the index of it (Python:0', JavaScript:1)

APOL, 32 bytes
+("Hi " +(V(i 4) ", I'm APOL!"))

Lexurgy, 44 bytes
a:
I'm=>Hi
*=>\,\ I'm\ Lexurgy\!/_ $//_ $$

Ungolfed explanation:
a:
I'm => Hi               # Swap "I'm" to "Hi"
* => \,\ I'm\ Lexurgy\! # the tack on the joke...
         / _ $          # when at the end of a word...
              // _ $$   # but not in between words.

lexurgy interpreter thing (copy paste code)

C# (Visual C# Interactive Compiler), 33 bytes
n=>$"Hi{n.Substring(3)}, I'm C#!"

Try it online!

APL+WIN, 31 21 bytes
10 bytes saved by taking on board Adam's comments. Thanks.
"Hi",3↓⎕,", I'm APL!"

Prompts for input string.
Try it online! Courtesy of dzaima/APL

K (ngn/k), 21 bytes
{"Hi",3_x,", I'm K!"}

Try it online!

Nim, 32 bytes
s=>"Hi"&s[3..s.len]&", I'm Nim!"

Try it online!

Icon, 52 bytes
procedure d(s);return"Hi"||s[4:0]||", I'm Icon!";end

Try it online!

Haxe, 57 54 bytes
function(x:String)return'Hi${x.substr(3)}, I\'m Haxe!'

Try it online!

Charcoal, 21 bytes
Hi✂Ｓ³Ｐ, I'm Charcoal!

Try it online! Link is to verbose version of code. Explanation: ✂ is the Slice operator which normally takes four arguments, however the use of the P command to output the suffix allows Charcoal to deduce that the last two arguments were omitted.

Clojure, 36 bytes
#(str"Hi"(subs % 3)", I'm Clojure!")

Lua, 68 59 bytes
function d(s)return(s:gsub("(I\'m)(.*)","Hi%2, %1 Lua"))end

Uses a pattern to swap in the I'm in the original and then returns the joke. Having chucks on a single line like this is valid, but ugly.
Edit: More efficient use of gsub

Consider adding a short explanation to your answer. Code-only answers tend to get automatically flagged as low quality.

@mbomb007 Thanks; I updated my answer.

Kotlin, 34 bytes
"Hi${i.substring(3)}, I'm Kotlin!"

Try it online!
Kotlin, 26 bytes
Is this a loop hole ?
"Hi${i.s(3)}, I'm Kotlin!"

Try it online!
The 26 is definitely a loophole else I can golf it to 5 bytes with:
i.k()

which is meaningless.
Try it online!

Forth (gforth), 40 bytes
: f 3 -3 d+ ." Hi"type ." , I'm Forth!";

Try it online!
Code Explanation
: f                 \ start a new word definition
  3 -3 d+           \ add 3 to the starting address and subtract 3 from the string length
  ." Hi"type        \ output "Hi" followed by all but the first 3 characters of the input string
  ." , I'm Forth!"; \ output ", I'm Forth!" and end the word definition

ReRegex, 31 bytes
^I'm/Hi/[^!]$/$0, I'm ReRegex!/

This assumes input doesn't end on !.
TIO

Julia 1.0, 30 bytes
s->"Hi$(s[4:end]), I'm Julia!"

Try it online!

JavaScript (V8), 37 bytes
s=>`Hi${s.slice(3)}, I'm JavaScript!`

Try it online!

Pyth, 21 bytes
++"Hi">z3", I'm Pyth!
Try it here

k, 21 bytes
,[;", I'm k!"]"Hi",3_

Runic Enchantments, 35 bytes
iiil2="Hi "$5*?S$' $", "$" Runic!"@

Try it online!
Spaces only need to be escaped if you want to use an adjective or noun-phrase as your <I'm!>. Runic splits input on spaces and newlines and as the challenge specified input as either an <adj> or <noun> as single word tokens, I used this feature to avoid parsing and splitting input with code.

Nice one! Runic is a new language to me.

@connectyourcharger Its my own esolang. I did some interesting things with it (such as utilizing unicode combining characters to perform different behavior), though I want to rebuild the language spec from the ground up, as there's a few failure points that I didn't anticipate.

Wren, 37 bytes
Fn.new{|x|"Hi%(x[3..-1]), I'm Wren!"}

Try it online!
Explanation
Fn.new{|x|                          } // New anonymous function
          "Hi                         // The hi section
             %(x[3..-1])              // THe input sliced, without the "I'm"
                        , I'm Wren!"  // THe third part, the remaining of the string

05AB1E, 20 bytes
3.$”ŒÞÿ, I'm 05AB1E!

Try it online!
3.$”ŒÞÿ, I'm 05AB1E!  # full program
   ”ŒÞÿ, I'm 05AB1E!  # "Hiÿ, I'm 05AB1E!"...
                      # (implicit) with ÿ replaced by...
                      # implicit input...
 .$                   # excluding the first...
3                     # literal...
 .$                   # chars
                      # implicit output

Nim, 43 bytes
echo "Hi",stdin.readAll[3..^1],", I'm Nim!"

Try it online!

Vyxal Ṫ, 16 bytes
3ȯ‛Hi$`, I'm ₴ŀ!

Try it Online!
I'm assuming I don't need to include the flag, since the ruby answer doesn't.

Perl 5 (-p), 26 bytes
s/I'm(.*)/Hi$1, I'm Perl!/

No deep magic, just a straight regex substitution

FerNANDo, 381 bytes
Outputting language name as ferNANDo, as in esolang page title.
0 A S D F G H J K
0 Q W E R T Y U I
1 0 1 1 0 1 1 0 1
0 1 0 0 1 0 0 0
0 1 1 0 1 0 0 1
? a b c d e f g h
?
a b c d e f g h
? a b c d e f g h
?
0 0 1 0 1 1 0 0
0 0 1 0 0 0 0 0
A S D F G H J K
Q W E R T Y U I
0 1 1 0 1 1 0 1
0 0 1 0 0 0 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 0 1
0 1 1 1 0 0 1 0
0 1 0 0 1 1 1 0
0 1 0 0 0 0 0 1
0 1 0 0 1 1 1 0
0 1 0 0 0 1 0 0
0 1 1 0 1 1 1 1
0 0 1 0 0 0 0 1

Try it online!
How it works
# accepts I
0 A S D F G H J K
# accepts '
0 Q W E R T Y U I
# accepts m
1 0 1 1 0 1 1 0 1
# outputs H
0 1 0 0 1 0 0 0
# outputs i
0 1 1 0 1 0 0 1
# cat begins
? a b c d e f g h
?
a b c d e f g h
? a b c d e f g h
?
# cat ends
# outputs rest
# characters .
0 0 1 0 1 1 0 0
0 0 1 0 0 0 0 0
A S D F G H J K
Q W E R T Y U I
0 1 1 0 1 1 0 1
0 0 1 0 0 0 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 0 1
0 1 1 1 0 0 1 0
0 1 0 0 1 1 1 0
0 1 0 0 0 0 0 1
0 1 0 0 1 1 1 0
0 1 0 0 0 1 0 0
0 1 1 0 1 1 1 1
0 0 1 0 0 0 0 1

jq, 21 bytes
"Hi\(.[3:]), I'm jq!"

Try it online!

nroff, 34 bytes
Using a hack NOT to quote the input with quotation marks for usage to split an argument into words.
.de x
.shift
Hi \\$* I'm nroff!
..

Attempt This Online!
Usage examples
.x I'm a programmer

.x I'm tired

.x I'm bored

Vyxal, 15 bytes
3ȯ`HiΠ, I'm ₴ŀ!

Try it Online!

Nibbles, 16.5 bytes
"Hi "`>4@", "$"Nibbles!"

Attempt This Online!
Explanation
"Hi "`>4@", "$"Nibbles!"
"Hi "                    Output "Hi "
     `>                  Drop the first
       4                  4 characters
        @                 from input
     `>                   and remember them
         ", "            Output ", "
             $           Output the remembered string
              "Nibbles!" Output "Nibbles!"

Finally I understand what "drop ( `> also take)" means in the Quick Ref!

AutoHotkey, 43 bytes
s := "I'm tired"
MsgBox % "Hi"SubStr(s,4)", I'm AutoHotkey!"

Not sure what's considered an output in AutoHotkey and I guess input string is not counted, so in that case the second line is 43 bytes.

Welcome to the site.  Do you really need spaces around the operators?

Welcome to PPCG. Note, though, that we don't allow input to be assigned to a pre-defined variable.

Dart, 40 39 bytes
f(s)=>"Hi${s.substring(3)}, I'm Dart!";

Try it online!

-1 bytes thanks to Value Ink

Use substring(3) to allow you to remove the space before it and save a byte.

AutoIt, 45
Msgbox(0,0,"Hi "&$cmdLine[2]&", I'm AutoIt")

Grabs the second word from the command line and puts it in a popup. (Must be compiled to exe)

What happens if there's more than two words, such as with the test case for I'm a programmer? I don't have the language installed.

Gema, 20 19 characters
<G>*=Hi*, $1 Gema\!

Sample run:
bash-4.4$ echo -n "I'm amazing" | gema '<G>*=Hi*, $1 Gema\!'
Hi amazing, I'm Gema!

bash-4.4$ echo -n "I'm a programmer" | gema '<G>*=Hi*, $1 Gema\!'
Hi a programmer, I'm Gema!

Try it online!

Rexx (Regina), 35 bytes
say"Hi"substr(arg(1),4)", I'm Rexx"

Try it online!

Bean, 30 bytes
00000000: 56d8 8100 d3d0 80a0 5d20 8081 253c 5881  VØ..ÓÐ. ] ..%<X.
00000010: 01c8 69ac a0c9 a7ed a0c2 e5e1 ee21       .Èi¬ É§í Âåáî!

Original JavaScript:
`Hi${a.slice(3)}, I'm Bean!`

The program takes the first line of raw input implicitly in a, removing the first three characters, and outputs the template above using that string.
Demo

Test Suite
00000000: 53d0 80d3 d080 a078 2080 8840 a05d 56d8  SÐ.ÓÐ. x ..@ ]VØ
00000010: 8100 d3d0 80a0 5d20 8081 253c 5881 0120  ..ÓÐ. ] ..%<X..
00000020: 807b 2381 02c8 69ac a0c9 a7ed a0c2 e5e1  .{#..Èi¬ É§í Âåá
00000030: ee21 0a                                  î!.

Original JavaScript:
_.map(a=>`Hi${a.slice(3)}, I'm Bean!`).join('\n')

The test suite takes all the lines of raw input implicitly in _, applies the first program to each line using map(), then outputs each result per line.
Demo

아희 (Aheui), 319 bytes
밦밚따밬다발빠받밠따따빠따따밟밢밙다다다분
뭏떠벓벑떠떠벐벌벋떠떠벉더너벅번뻐떠뻐떠벊
맣＠섹뵗솬밯삭밧타뿌싿삳빠맣박밯빠싸주마붗
반밚따따두쪼＠썽선처손＠＠＠오섣멓서차소빠
성멓뻐섣멓＠＠＠＠＠＠희＠먛＠셔멓섣멓멓멓

Try it online!
Prints 아희(official Korean name of the language) instead of Aheui, so the code is quite long.

Assembly (gcc, x64, Linux), 315 bytes
h:.int 26952
s:.int 32
g:.asciz ", I'm GNU Assembler!\n"
.globl main
main:
mov %rdi, %r13
mov %rsi, %r14
lea h, %rdi
mov $0, %rax
call printf
mov $2, %r15
l:
lea s, %rdi
mov $0, %rax
call printf
mov (%r14, %r15, 8), %rdi
mov $0, %rax
call printf
inc %r15
cmp %r15, %r13
jg l
lea g, %rdi
mov $0, %rax
call printf
ret

Try it online!
Ungolfed:
.section .bss

.section .data

hi:
.asciz  "Hi"

space:
.asciz  " "

imgnuasm:
.asciz  ", I'm GNU Assembler!\n"

badArgumentCount:
.asciz  "Requires at least two arguments\n"

.section .text
.globl main
main:

cmpq $3, %rdi # must have at least two arguments
jl .error

movq %rdi, %r13 # save argc
movq %rsi, %r14 # save argv

leaq hi, %rdi
movq $0, %rax   #%rax holds how many xmm regs to be used in x86-64
call printf

movq $2, %r15 # because (%r14, %r15(==0), 8) is the program path and (%r14, %r15(==1), 8) is "I'm"

.loopbegin:

  leaq space, %rdi
  movq $0, %rax
  call printf

  movq (%r14, %r15, 8), %rdi #(%r14, %r15, 8)
  movq $0, %rax
  call printf

  incq %r15
  cmp %r15, %r13
  jg .loopbegin

  leaq imgnuasm, %rdi
  movq $0, %rax
  call printf

  jmp .done

.error:
  leaq badArgumentCount, %rdi
  movq $0, %rax #%rax holds how many xmm regs to be used in x86-64
  call printf

.done:
  movq $0, %rax # return 0 (success)
  ret

C# .NET, 94 bytes
class P{static void Main(string[]a){System.Console.Write($"Hi {a[0].Substring(4)}, I'm C#");}}

Try Online

Clojure - 36 Bytes
#(str"Hi "(subs %4)", I'm Clojure!")
Trivial solution is trivial, probably has room for improvement

VBScript, 51 bytes
Msgbox "Hi "&Wscript.Arguments(1)&", I'm VBScript!"

Test like:
ScriptFile.vbs I'm tired

TI-Basic, 47 bytes
Input Str1
"Hi"+sub(Str1,4,length(Str1)-3)+", I'm TI-Basic!

Output is stored in Ans and displayed at the end.

Pxem (don't break loop when items are insufficient), 46 38 bytes, filename only.
It's been a while. As usual, \0001 is not such a string but a character 0x01.
.z.im.a_iH.w.i.c\0001.+.a.s!mexP m'I ,.v.p

Try it online!
With comments
XX.Z
.A.zXX.Z
  # push(getchar())
  .A.iXX.Z
  # constant 'm' charcode
  .AXXm.Z
# break loop if pop==pop
.A.aXX.Z
# "Hi" and dummy
.AXX_iH.Z
# dummy is popped before entering loop
.A.wXX.Z
  # keep pushing until EOF (-1) is met
  .A.i.c\0001.+.aXX.Z
# discard final EOF
.A.sXX.Z
# ", I'm Pxem!"
# reverse stack before printing each item
.A!mexP m'I ,.v.p

CLC-INTERCAL, 356 352 bytes.
Assumes adjective and noun has <100 characters.
DO;1<-#3DO;2<-#99DOWRITEIN;1+;2DO;3<-#2DO;3SUB#1<-#29DO;3SUB#2<-#1118DO;4<-#1DO;4SUB#1<-#127DO;6<-#1DO;6SUB#1<-#117DO;5<-#13DO;5SUB#1<-#16DO;5SUB#2<-#368DO;5SUB#3<-#368DO;5SUB#4<-#274DO;5SUB#5<-#103DO;5SUB#6<-#376DO;5SUB#7<-#217DO;5SUB#8<-#374DO;5SUB#9<-#356DO;5SUB#10<-#374DO;5SUB#11<-#375DO;5SUB#12<-#1353DO;5SUB#13<-#276DOREADOUT;3+;2+;4+;6+;1+;6+;5

Copy and paste to try it online!
With comments
DONOTE ;1 for "I'm", ;2 for rest of input
DO;1<-#3
DO;2<-#99
DOWRITEIN;1+;2
DONOTE ;3 for "Hi"
DO;3<-#2DO;3SUB#1<-#29DO;3SUB#2<-#1118
DONOTE ;4 for ","
DO;4<-#1DO;4SUB#1<-#127
DONOTE ;6 for " "
DO;6<-#1DO;6SUB#1<-#117
DONOTE ;5 for "CLC-INTERCAL!"
DO;5<-#13DO;5SUB#1<-#16DO;5SUB#2<-#368DO;5SUB#3<-#368DO;5SUB#4<-#274DO;5SUB#5<-#103DO;5SUB#6<-#376DO;5SUB#7<-#217DO;5SUB#8<-#374DO;5SUB#9<-#356DO;5SUB#10<-#374DO;5SUB#11<-#375DO;5SUB#12<-#1353DO;5SUB#13<-#276
DONOTE concatenate those strings
DOREADOUT;3+;2+;4+;6+;1+;6+;5

Shall I ;7<-"C"? Would it shorten the code?

Python 3 (34 Bytes)
lambda m:"Hi%s, I'm Python!"%m[3:]

Python 3 (35 Bytes)
lambda m:"Hi"+m[3:]+", I'm Python!"

Python 3, 46 bytes
s=input()
print("Hi "+s[4:]+", I'm Python 3!")

Try it online!

Pascal (ISO standard 10206, “Extended Pascal”), 103 characters
program d(input,output);var s:string(99);begin readLn(s);writeLn('Hi',subStr(s,4),', I''m Pascal!')end.

FreePascal, 83 characters
The FPC (FreePascal Compiler) in its default configuration (specifically {$mode FPC}), discards and doesn’t need a program header (the program d(input,output);).
Instead a program always has the text files input and output at its disposal.
Furthermore string is shorthand for string[255].
However, the subStr function is not (yet) supported (as of FPC version 3.2.0) and copy will necessarily require a length specification (can only be omitted in {$mode Delphi}).
Thus we can condense the above program to:
var s:string;begin readLn(s);writeLn('Hi',s[4..length(s)],', I''m FreePascal!')end.

var s:string;begin readLn(s);delete(s,1,3);writeLn('Hi',s,', I''m FreePascal!')end.

Thunno KJ, \$ 22 \log_{256}(96) \approx \$ 18.11 bytes
3Zx", I'm Thunno!"s"Hi

Attempt This Online!
Thunno, \$ 23 \log_{256}(96) \approx \$ 18.93 bytes
3Zx"Hi%s, I'm Thunno!"$

Attempt This Online!
Explanation
               # Implicit input
3Zx            # Remove first three characters
   "..."       # Push the string literal
        s"Hi  "# Swap and push "Hi"
               # Implicit output of joined stack

           # Implicit input
3Zx        # Remove first three characters
   "..."   # Push the string literal
        $  # Replace "%s" with ^^
           # Implicit output

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

authors: J. А. del Rio - слава СССР

sort: votes